【问题标题】:Generating Create script for existing foreign key through SSMS通过 SSMS 为现有外键生成创建脚本
【发布时间】:2017-06-09 12:59:05
【问题描述】:

在通过 SSMS 为现有外键约束生成 Create DB 脚本时,我们可以看到两组 alter 语句。一个带有 NOCHECK ADD,另一个带有 CHECK。

ALTER TABLE [dbo].[claim]  WITH NOCHECK ADD  CONSTRAINT [FK_CLAIM_COPCID] 
FOREIGN KEY([copcid])
REFERENCES [dbo].[copc] ([CopcId])
GO

ALTER TABLE [dbo].[claim] CHECK CONSTRAINT [FK_CLAIM_COPCID]
GO

为什么我们要使用两组脚本来创建新的约束?

【问题讨论】:

标签: sql sql-server sql-server-2008 sql-server-2012


【解决方案1】:

第一个 alter 语句创建一个约束并指示添加该约束,而不检查现有行是否服从新约束。

当您在未先检查行的情况下添加约束时,在您启用它之前它不会完全激活。这就是第二条语句的作用,它启用了新的约束。如果有打破约束的行,您将无法启用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多