2014-09-23 52 views
5

我想用我的CREATE TABLE语句内联添加一个外键约束。不过,我也想包含NOCHECK属性。这可以在CREATE TABLE语句中一次完成吗?我似乎无法找到一个好例子。TSQL: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]) 
) 

任何想法?

回答

4

无法在表定义级别添加约束和禁用。

你有两个选择

不添加在表定义级别的限制,后来添加的约束,并且还使用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