循环删除外键约束

允我心安 提交于 2020-03-01 08:13:41

SQL删除,有外键约束常常不能删除,需要先删除外键

 

--/***********PowerBy:rovedog ***************/
--/第1步**********删除所有表的外键约束*************************/

DECLARE c1 CURSOR  FOR 
SELECT  'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; '
FROM  sysobjects
WHERE  xtype = 'F'
OPEN  c1
DECLARE  @c1 varchar(8000)
FETCH  NEXT  FROM  c1 INTO  @c1
WHILE (@@fetch_status=0)
BEGIN 
EXEC (@c1)
FETCH  NEXT  FROM  c1 INTO  @c1
END 
CLOSE  c1
DEALLOCATE  c1

--/第2步**********删除所有表*************************/

DECLARE  @sql varchar(8000)
WHILE  (select count(*) FROM  sysobjects WHERE  type='U')>0
BEGIN 
SELECT @sql='drop table [' + name+']'
FROM sysobjects
WHERE (type = 'U')
ORDER BY 'drop table [' + name+']'
EXEC (@sql) 
END 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!