À partir de l'Explorateur d'objets dans SQL Server, lors de la sélection et du script d'une contrainte de clé étrangère, le code suivant est généré.
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
Quel est le but de la dernière instruction "ALTER TABLE CHECK CONSTRAINT"? Peu importe qu'il soit exécuté ou non. Il n'échoue pas sur les mauvaises données existantes, ni ne change que la contrainte sera appliquée sur les nouvelles données.
Merci!