我想在我的CREATE TABLE语句中添加一个外键约束。但是,我还想包含NOCHECK属性。这可以在CREATE TABLE语句中的一次传递中完成吗?我似乎无法找到一个好的例子。
所以,比如:
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])
)
有什么想法吗?
答案 0 :(得分:7)
您无法在表定义级别添加约束和禁用。
您有两个选项
不要在表定义级别添加约束,稍后添加约束,并使用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