读书人

怎么删除约束

发布时间: 2012-03-29 12:53:13 作者: rapoo

如何删除约束:
如下创建表:

SQL code
create table dbo.TRecord(    id int  identity(1,1)  primary key,        RecordString nvarchar(100) not  null unique  --unique表示不能重复键:)


SQL code
表里有个字段:RecordString  有unique约束 --unique表示不能重复键:现在:我想删了约束  ,却不知如何删除:  书上说:alter 表名 drop constraint 约束名 --很明显,创建表时 是一次性创建约束的,没有名约束啊。--如果,drop了表 再新建另一个表,不行啊,表中有数据,不能drop 啊。


[解决办法]
创建的时候不自己制定约束名字,那系统就自动给你生成一个。

你要删除可以先查询出来。

SQL code
select * from sys.indexes  where object_id=object_id('TRecord')
[解决办法]
探讨

创建的时候不自己制定约束名字,那系统就自动给你生成一个。

你要删除可以先查询出来。

SQL code
select * from sys.indexes where object_id=object_id('TRecord')

[解决办法]
create table dbo.TRecord
(
id int identity(1,1) primary key,
RecordString nvarchar(100) not null unique --unique表示不能重复键:
)

--查看唯一约束名
SELECT Name FROM sysobjects WHERE parent_obj=OBJECT_ID('dbo.TRecord') AND xtype='UQ'

ALTER TABLE dbo.TRecord DROP CONSTRAINT 约束名
[解决办法]
探讨

我这样删为什么出错了:

SQL code
--查到例名:
declare @triggerName nvarchar(200);
--select * from sys.indexes where object_id=object_id('TRecord')
select @triggerName= Name from sysobjects where( parent_obj=OBJ……

[解决办法]
探讨

--查到例名:
SQL code
declare @triggerName nvarchar(200);
--select * from sys.indexes where object_id=object_id('TRecord')
select @triggerName= Name from sysobjects where( parent_obj=OBJECT_ID('dbo.TR……

[解决办法]
SQL code
--查到例名:declare @triggerName nvarchar(200);--select * from sys.indexes  where object_id=object_id('TRecord') select @triggerName= Name from sysobjects where( parent_obj=OBJECT_ID('dbo.TRecord') AND xtype='UQ');EXEC('alter table dbo.TRecord drop CONSTRAINT' +@triggerName);
[解决办法]
探讨

SQL code
--查到例名:
declare @triggerName nvarchar(200);
--select * from sys.indexes where object_id=object_id('TRecord')
select @triggerName= Name from sysobjects where( parent_obj=OBJECT_ID('dbo.TRe……

[解决办法]
--查看table表所有的约束
exec sp_helpconstraint 'table'
--查看table表所有的索引
exec sp_helpindex 'table'

读书人网 >SQL Server

热点推荐