Z Eksploratora obiektów w programie SQL Server podczas wybierania i wykonywania skryptów ograniczenia klucza obcego generowany jest następujący kod.
USE [MyTestDatabase]
GO
ALTER TABLE [dbo].[T2] WITH NOCHECK ADD CONSTRAINT [FK_T2_T1] FOREIGN KEY([T1ID])
REFERENCES [dbo].[T1] ([T1ID])
GO
ALTER TABLE [dbo].[T2] CHECK CONSTRAINT [FK_T2_T1]
GO
Jaki jest cel ostatniego stwierdzenia „ALTER TABLE CHECK CONSTRAINT”? Wydaje się, że nie ma znaczenia, czy jest uruchamiany. Nie zawodzi w przypadku istniejących złych danych ani nie zmienia, że ograniczenie będzie wymuszane dla nowych danych.
Dzięki!
źródło
Twoje pierwsze oświadczenie tworzy ograniczenie wyłączone. Musi być włączony i prawdopodobnie zaufany. Poniższa dziwna składnia sprawi, że twoje ograniczenie zostanie włączone i zaufane:
Jest bardzo dobry post na blogu autorstwa Hugo Kornelisa, który wyjaśnia go szczegółowo: Czy możesz zaufać swoim ograniczeniom
źródło