参照する外部キー制約を持つ SQL Server 2012 データベースがありますCountries.CountryID = States.CountryID
テーブルを再作成する必要があったCountries
ため、この FOREIGN KEY をStates
テーブルから削除しました (そうしないと、国を削除できません)
それを行った後、FKを再作成したいのですが、次のStates
ように指定しない限り、できませんNO CHECK
。
ALTER TABLE States
WITH NOCHECK
ADD CONSTRAINT FK_StatesCountries FOREIGN KEY (CountryID) REFERENCES Countries(CountryID)
GO
最初は、States の行の一部にCountryID
一致するCountries.CountryID
レコードがないことに気づきませんでした。明らかにWITH NOCHECK
、エラーなしで続行できました。
現在、SQLServer はこの FK を「信頼されていない」とマークしており、MSDN はすべての制約をチェックしてクエリ オプティマイザーを再度有効にするように指示しています。では、一部の州に無効な CountryID があるにもかかわらず、次の行でエラーが発生しないのはなぜですか?
ALTER TABLE States
CHECK CONSTRAINT ALL
GO
これはエラーを発生させるべきだったと思います。