2014-09-23 16 views
5

Desidero aggiungere un vincolo di chiave esterna in linea con la mia istruzione CREATE TABLE. Tuttavia, voglio anche includere l'attributo NOCHECK. Questo può essere fatto in un passaggio all'interno dell'istruzione CREATE TABLE? Non riesco a trovare un buon esempio.TSQL: NOCHECK Chiave esterna interna CREATE TABLE

Quindi, qualcosa di simile:

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

Tutte le idee?

risposta

4

Non è possibile aggiungere un vincolo e disabilitare a livello di definizione della tabella.

si hanno due opzioni

non aggiungi un vincolo al tavolo Definizione livello e poi aggiungere il vincolo e anche disabilitarlo usando 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 

Aggiungi vincolo al tavolo Definizione livello e poi disattivarlo.

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