tengo una 2012 db SQL Server con una restricción de clave externa que hace referencia Countries.CountryID = States.CountryID
SQL NO CLAVE Cheque internacional después de los datos, volver a habilitar optimizador de consultas de
que necesitaba para volver a crear Countries
mesa, así que caer esta clave externa de la States
mesa (de lo contrario no permitiría que lo deje países)
Después de hacer eso, quiero volver a crear el FK en States
pero no me permito a menos que yo indique NO CHECK
como tal:
ALTER TABLE States
WITH NOCHECK
ADD CONSTRAINT FK_StatesCountries FOREIGN KEY (CountryID) REFERENCES Countries(CountryID)
GO
No me di cuenta al principio que algunas de las filas de estados tenían CountryID
que no tenían un registro Countries.CountryID
coincidente. Obviamente, WITH NOCHECK
me permitió proceder sin error.
Ahora SQLServer con marca este FK como "no confiable", MSDN dice que vuelva a habilitar el optimizador de consultas comprobando todas las restricciones. Entonces, ¿por qué la siguiente línea NO me da un error a pesar de que algunos estados tienen un CountryID no válido?
ALTER TABLE States
CHECK CONSTRAINT ALL
GO
Creo que esto debería haber provocado un error.
Perfecto, gracias! marcará la respuesta en 9 minutos – parliament