如何在没有约束检查的情况下删除表

如何在没有约束检查的情况下删除表

问题描述:

我需要将数据和模式从开发更新到登台dbs,在那里我要删除/创建一组表。我需要超越FK约束检查。看着MS的ALTER TABLE语法树 - 我知道它在那里,但我无法识别正确的语法。如何在没有约束检查的情况下删除表

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

+1

你的意思是这些表中或从其他表FKS删除数据?无论哪种方式,我希望你必须首先删除constaints,或者至少禁用它们(如果可能的话)。你是指ALTER TABLE DROP CONSTAINT? – Rup 2011-01-19 18:43:12

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)<> ''_''' 

的好处在这里的是,与所有的约束禁用,您可以按任意顺序

+0

这确实看起来像我想要做的,但得到 - 关键字'CONSTRAINT'附近的语法不正确。 – justSteve 2011-01-19 19:10:23

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

ALTER TABLE DROP CONSTRAINT