批量删除MSSQL 中主外键约束

Posted Adeal(mssql_QQ群:314974645)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量删除MSSQL 中主外键约束相关的知识,希望对你有一定的参考价值。

转自: http://www.maomao365.com/?p=813

在制作 MSSQL同步工具的时候,发现由于主外键的约束,导致数据同步异常,所有我们需要把 读数据库里面的主外键约束,进行批量删除操作.

技术分享图片

1 如何批量查询数据库的主外键?
在MSSQL2005以上版本中,系统提供一个系统视图 sys.foreign_keys 可以查询出系统所有的外键约束
技术分享图片
2 如何批量删除数据库的主外间键?

--------------------------------------------------------------------------

create table #t (keyId int identity,name varchar(200),tbname varchar(200))

insert into #t (name,tbName) 
select a.name,b.name from sys.foreign_keys a 
left join sysobjects b on a.parent_object_id = b.id 
declare @i int,@imax int,@name varchar(200) ,@tbName varchar(200)

select @i=MIN(keyId) from #t 
select @imax=MAX(keyid) from #t

while @i<=@imax
begin
set @name=‘‘ 
set @tbName =‘‘
select @name =name,@tbName=tbname from #t where keyId=@i
--print @name 
--print @tbName 

print( ALTER TABLE [+@tbname +] DROP CONSTRAINT [+@name+])
exec( ALTER TABLE [+@tbname +] DROP CONSTRAINT [+@name+])

set @i=@i+1
end


truncate table #t 
drop table #t

----------------------------------------------------------

技术分享图片 

以上是关于批量删除MSSQL 中主外键约束的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中主外键怎么弄?

记录sql server 的批量删除主外键的sql语句

通过SQL脚本来查询SQLServer 中主外键关系

Sql Server有主外键关系时添加删除数据

数据库中主键和外键的作用?

sqlserver删除有主外键的数据