2014-09-23 14 views
5

Tôi muốn thêm một ràng buộc khóa ngoại tuyến nội tuyến với câu lệnh CREATE TABLE của tôi. Tuy nhiên, tôi cũng muốn bao gồm thuộc tính NOCHECK. Điều này có thể được thực hiện trong một vượt qua bên trong câu lệnh CREATE TABLE? Tôi dường như không thể tìm thấy một ví dụ tốt.TSQL: NOCHECK Khóa ngoài bên trong TẠO TẠO

Vì vậy, một cái gì đó như:

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]) 
) 

ý tưởng Bất kỳ?

Trả lời

4

Bạn không thể thêm Hạn chế và vô hiệu hóa ở cấp độ định nghĩa bảng.

Bạn có hai lựa chọn

Đừng thêm một hạn chế tại Bảng Định nghĩa Level và sau Thêm các hạn chế và cũng Disable nó bằng cách sử 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 

Thêm Hạn chế tại Bảng Definition Cấp và sau đó vô hiệu hóa nó.

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 
Các vấn đề liên quan