SQLSERVER 批量去掉外键约束

DECLARE @SQLSTR VARCHAR(1000);
DECLARE My_Cursor CURSOR --定义游标
FOR (select  ‘ALTER TABLE ‘+o.name+‘ drop  CONSTRAINT ‘+fk.name+‘;‘  AS  Command  from   sys.foreign_keys  fk    JOIN  sys.all_objects  o  ON fk.parent_object_id=o.object_id) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @SQLSTR; --读取第一行数据
WHILE @@FETCH_STATUS = 0
  BEGIN
  exec(@SQLSTR);
  --UPDATE dbo.MemberAccount SET UserName = UserName + ‘A‘ WHERE CURRENT OF My_Cursor; --更新
 --DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
 FETCH NEXT FROM My_Cursor INTO @SQLSTR; --读取下一行数据
 END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

如果删除记录的时候可以 NOCheck CONSTRAINT 
 如果是删除表的话 NoCheck好像是不行的,必须 drop  CONSTRAINT

时间: 2024-10-14 01:24:08

SQLSERVER 批量去掉外键约束的相关文章

SQLServer禁用、启用外键约束

---启用or禁用指定表所有外键约束 alter table PUB_STRU NOCHECK constraint all; alter table PUB_STRU CHECK constraint all; ---生成启用or禁用指定表外键约束的sql select 'ALTER TABLE ' + b.name + ' NOCHECK CONSTRAINT ' + a.name +';' from sysobjects a ,sysobjects b where a.xtype ='f'

SQLServer 删除所有表的外键约束

DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype = 'F'open c1declare @c1 varchar(8000)fetch next from c1 into @c1while(@@fetch_status=0) begin exec(@c1) fetch next fr

SQL批量删除用户表(先删除所有外键约束,再删除所有表)

--批量删除用户表 --1.删除外键约束DECLARE c1 cursor for     select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; '    from sysobjects     where xtype = 'F'open c1declare @c1 varchar(8000)fetch next from c1 into @c1while(@@fetch_status=0

批量删除MSSQL 中主外键约束

转自: http://www.maomao365.com/?p=813 在制作 MSSQL同步工具的时候,发现由于主外键的约束,导致数据同步异常,所有我们需要把 读数据库里面的主外键约束,进行批量删除操作. 1 如何批量查询数据库的主外键? 在MSSQL2005以上版本中,系统提供一个系统视图 sys.foreign_keys 可以查询出系统所有的外键约束2 如何批量删除数据库的主外间键? -----------------------------------------------------

SqlServer禁用启用触发器、外键约束

--禁用指定名称触发器 ALTER TABLE tbname DISABLE TRIGGER trigname --恢复指定名称触发器 ALTER TABLE tbname ENABLE TRIGGER trigname --禁用某个表上的所有触发器 ALTER TABLE tbname DISABLE TRIGGER all --启用某个表上的所有触发器 ALTER TABLE tbname ENABLE TRIGGER all --禁用所有表上的所有触发器exec sp_msforeacht

SQL的主键和外键约束

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,

SQL的主键和外键约束详解及用途

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,

主键和外键约束

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 一.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄.身份证号是唯一能确

如何删除有外键约束的数据

SQLServer 2012 表TableA与TbaleB有外键约束,约束列名为TbaleB的iTableAID列,删除的时候会提示 DELETE  dbo.TableA 消息 547,级别 16,状态 0,第 1 行 DELETE 语句与 REFERENCE 约束"FK_TbaleB_TableA_iTableAID"冲突.该冲突发生于数据库"TEST",表"dbo.TbaleB", column 'iTableAID'. 语句已终止. 此时需