Tsql ALTER TABLE[dbo].[MyTable]检查约束[FK\u MyTable\u SomeCol]

Tsql ALTER TABLE[dbo].[MyTable]检查约束[FK\u MyTable\u SomeCol],tsql,Tsql,如果使用外键为表编写脚本,则如下所示: GO ALTER TABLE [dbo].[MyTable] WITH CHECK ADD CONSTRAINT [FK_MyTable_SomeCol] FOREIGN KEY([SomeCol]) REFERENCES [dbo].[MyOtherTable] ([SomeCol]) GO ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_SomeCol] GO (ALTER TAB

如果使用外键为表编写脚本,则如下所示:

GO
ALTER TABLE [dbo].[MyTable]  WITH CHECK ADD  CONSTRAINT [FK_MyTable_SomeCol] FOREIGN KEY([SomeCol])
REFERENCES [dbo].[MyOtherTable] ([SomeCol])
GO
ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_SomeCol]
GO

ALTER TABLE[dbo].[MyTable]CHECK CONSTRAINT[FK\u MyTable\u SomeCol]
)的第二部分是什么?

这是约束脚本编写方式的产物-尽管没有必要指定这些选项(因为它们是新约束的默认值),同一生成器还可以以完全相同的方式生成
NOCHECK
选项

对于
ALTER TABLE
表示
CHECK
/
NOCHECK
的两种不同用法:

WITH CHECK | WITH NOCHECK

指定是否根据新添加或重新启用的
外键
检查
约束验证表中的数据。如果未指定,则对新约束假定为带检查的
,对重新启用的约束假定为带NOCHECK的

以及:

{CHECK | NOCHECK}约束

指定启用或禁用约束名称


因此,一个选项是“检查表的当前内容”,另一个选项是“在添加新数据时验证新数据”。

这是为表实现的一种方法。

在使用外键编写表脚本时,我看不到第二条语句(SQL Server 2008 R2)。您确定第一个不包含带有NOCHECK的
而不是带有CHECK的
吗?是的,它带有NOCHECK。现在我对它的功能更清楚了。谢谢大家!!