参照する外部キー制約を持つ 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
これはエラーを発生させるべきだったと思います。