删除sql server默认约束的通用脚本
创始人
2024-07-17 16:11:06
0

sql server默认约束可不能小看,它影响着我们的删除字段操作,可能会造成删除字段时报错。

在SQL Server 中,如果给表的一个字段设置了默认值,就会在系统表sysobjects中生成一个sql server默认约束。如果想删除这个设置了默认值的字段(假设此字段名column1),执行“ALTER TABLE table1 DROP COLUMN column1”时就会报错:

  1. The object 'DF__xxxxxxxxxxx' is dependent on column 'column1'.   
  2. ALTER TABLE DROP COLUMN column1failed because one or more objects access this column. 

所以在删除此字段时需要先将系统表中的对应默认约束删除, 可以使用下面的脚本进行删除sql server默认约束:

  1. DECLARE @tablename VARCHAR(100), @columnname VARCHAR(100), @tab VARCHAR(100)  
  2. SET @tablename='CountryGroupEmailAndWaitAux' 
  3. SET @columnname='actionOfHasNoValidEmail' 
  4. declare @defname varchar(100)  
  5. declare @cmd varchar(100)  
  6. select @defname = name  
  7. FROM sysobjects so   
  8. JOIN sysconstraints sc  
  9. ON so.id = sc.constid  
  10. WHERE object_name(so.parent_obj) = @tablename  
  11. AND so.xtype = 'D' 
  12. AND sc.colid =  
  13. (SELECT colid FROM syscolumns  
  14. WHERE id = object_id(@tablename) AND  
  15. name = @columnname)  
  16. select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname  
  17. if @cmd is null print 'No default constraint to drop'  
  18. exec (@cmd)  

在删除对应的默认约束后,执行:

  1. ALTER TABLE table1 DROP COLUMN column1 


即可删除字段。
 

 

 

【编辑推荐】

SQL Server外关键字约束的定义

修改Sql Server唯一约束

sql server中动态sql语句的应用

SQL Server删除视图的两种方法

SQL Server视图的使用

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...