SQL Server中对应默认约束的删除方法

数据库 SQL Server
下面将为您介绍在SQL Server中将系统表中的对应默认约束删除的脚本,供您参考,希望对您能够有所启迪。

下面将为您介绍在SQL Server中将系统表中的对应默认约束删除的脚本,供您参考,希望对您能够有所启迪。

在SQL Server 中,如果给表的一个字段设置了默认值,就会在系统表sysobjects中生成一个默认约束。
如果想删除这个设置了默认值的字段(假设此字段名column1),
执行“ALTER TABLE table1 DROP COLUMN column1”时就会报错:
The object 'DF__xxxxxxxxxxx' is dependent on column 'column1'.
ALTER TABLE DROP COLUMN column1failed because one or more objects access this column.

所以在删除此字段时需要先将系统表中的对应默认约束删除, 可以使用下面的脚本进行删除:
-- this script drops the default constraint which is generated by the setting of default value.
DECLARE @tablename VARCHAR(100), @columnname VARCHAR(100), @tab VARCHAR(100)
SET @tablename='CountryGroupEmailAndWaitAux'
SET @columnname='actionOfHasNoValidEmail'

declare @defname varchar(100)
declare @cmd varchar(100)

select @defname = name
FROM sysobjects so
JOIN sysconstraints sc
ON so.id = sc.constid
WHERE object_name(so.parent_obj) = @tablename
AND so.xtype = 'D'
AND sc.colid =
(SELECT colid FROM syscolumns
WHERE id = object_id(@tablename) AND
name = @columnname)

select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname
if @cmd is null print 'No default constraint to drop'
exec (@cmd)

在删除对应的默认约束后,执行:
ALTER TABLE table1 DROP COLUMN column1
即可删除字段。

 

【编辑推荐】
删除SQL约束的方法

SQL中用于删除记录的DELETE语句

教您如何彻底删除SQL Server注册表

SQL中游标的语法及应用

SQL语句中布尔表达式不可忽视的部分

 

责任编辑:段燃 来源: 互联网
相关推荐

2010-10-22 17:26:55

SQL Server删

2010-11-12 15:28:59

sql server默

2010-09-03 13:51:10

SQL删除约束

2010-09-08 13:14:57

SQL删除约束

2010-09-25 13:16:51

SQL Server外

2010-09-02 11:38:44

SQL删除

2010-11-12 14:45:19

Sql Server唯

2010-11-10 11:37:29

SQL Server删

2010-10-22 16:56:35

sql server删

2010-09-02 11:34:51

SQL删除

2010-09-25 11:50:47

sql server外

2010-09-03 10:52:10

SQL删除

2010-09-01 16:44:26

SQL删除主键

2010-10-20 10:19:33

sql server删

2010-11-10 11:54:32

SQL SERVER删

2009-04-15 13:21:03

微软SQL Server约束

2010-11-10 13:03:15

SQL Server存

2010-11-12 15:19:06

Sql Server外

2010-11-12 15:04:30

SQL Server缺

2010-09-01 17:13:07

SQL删除约束
点赞
收藏

51CTO技术栈公众号