Sql server TSQL:NOCHECK创建表内的外键

Sql server TSQL:NOCHECK创建表内的外键,sql-server,tsql,Sql Server,Tsql,我想在CREATETABLE语句中添加外键约束。但是,我还想包括NOCHECK属性。这可以在CREATETABLE语句中一次性完成吗?我似乎找不到一个好的例子 比如说: CREATE TABLE dbo.SampleTable ( [ID] INT IDENTITY (1,1) NOT NULL, [ParentSampleTableID] INT NOT NULL, <NOCHECK> CONSTRAINT [FK_SampleTable_ParentSample

我想在CREATETABLE语句中添加外键约束。但是,我还想包括NOCHECK属性。这可以在CREATETABLE语句中一次性完成吗?我似乎找不到一个好的例子

比如说:

CREATE TABLE dbo.SampleTable (
   [ID] INT IDENTITY (1,1) NOT NULL,
   [ParentSampleTableID] INT NOT NULL,
   <NOCHECK> CONSTRAINT [FK_SampleTable_ParentSampleTable] FOREIGN KEY (ParentSampleTableID) REFERENCES dbo.ParentSampleTable ([ID])
)
创建表dbo.SampleTable(
[ID]整数标识(1,1)不为空,
[ParentSampleTableID]INT不为NULL,
约束[FK\U SampleTable\U ParentSampleTable]外键(ParentSampleTableID)引用dbo.ParentSampleTable([ID])
)

有什么想法吗?

您不能在表定义级别添加约束和禁用

你有两个选择

不要在表定义级别添加约束,以后再添加约束,并使用NOCHECK禁用约束。

CREATE TABLE dbo.SampleTable (
   [ID] INT IDENTITY (1,1) NOT NULL,
   [ParentSampleTableID] INT NOT NULL)
GO   
ALTER TABLE dbo.SampleTable  
WITH NOCHECK ADD CONSTRAINT [FK_SampleTable_ParentSampleTable] 
           FOREIGN KEY (ParentSampleTableID) REFERENCES dbo.ParentSampleTable ([ID])
GO
在表定义级别添加约束,然后将其禁用。

CREATE TABLE dbo.SampleTable (
   [ID] INT IDENTITY (1,1) NOT NULL,
   [ParentSampleTableID] INT NOT NULL,
   CONSTRAINT [FK_SampleTable_ParentSampleTable] 
            FOREIGN KEY (ParentSampleTableID) REFERENCES dbo.ParentSampleTable ([ID])
)
GO
ALTER TABLE dbo.SampleTable NOCHECK CONSTRAINT [FK_SampleTable_ParentSampleTable]
GO