如何删除没有约束检查的表

时间:2011-01-19 18:41:46

标签: sql-server

我需要将数据和模式从dev更新到staging dbs,我想要DROP / CREATE一组表。我需要覆盖FK约束检查。查看MS的ALTER TABLE语法树 - 我知道它在那里,但我无法识别正确的语法。

@Rup:看起来挂断来自其他桌子的FK。有没有办法关闭所有约束检查,还是需要生成表/ FK列表?

2 个答案:

答案 0 :(得分:3)

ALTER TABLE yourtable
NOCHECK CONSTRAINT ALL

并且这个主题的变体是禁用所有表的所有约束删除所有数据,然后再次添加所有约束。

exec sp_MSforeachtable @command1='alter table ? nocheck constraint all', @whereand='and substring(o.name,1,1) <> ''_'''
exec sp_MSforeachtable @command1='delete from ?'
exec sp_MSforeachtable @command1='alter table ? check constraint all', @whereand='and substring(o.name,1,1)<> ''_'''

这里的好处是,在禁用所有约束的情况下,您可以按任何顺序删除数据

答案 1 :(得分:0)

您可以删除约束,删除表并重新创建。如果没有循环约束,也应该可以以正确的顺序删除表并重新创建。

ALTER TABLE DROP CONSTRAINT