我需要将数据和模式从dev更新到staging dbs,我想要DROP / CREATE一组表。我需要覆盖FK约束检查。查看MS的ALTER TABLE语法树 - 我知道它在那里,但我无法识别正确的语法。
@Rup:看起来挂断来自其他桌子的FK。有没有办法关闭所有约束检查,还是需要生成表/ FK列表?
答案 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)
您可以删除约束,删除表并重新创建。如果没有循环约束,也应该可以以正确的顺序删除表并重新创建。