1

SQL Server Management Studio でテーブル作成スクリプトを生成する場合、外部キー制約は、私が記述する方法とは少し異なります。

ここに1つがあります:

ALTER TABLE [dbo].[GeoBytesCountries]  
WITH CHECK 
ADD CONSTRAINT [FK_GeoBytesCountries_MapReferenceId] 
FOREIGN KEY ([MapReferenceId])
REFERENCES [dbo].[GeoBytesMapReferences] ([MapReferenceId])
GO

ALTER TABLE [dbo].[GeoBytesCountries] 
CHECK CONSTRAINT [FK_GeoBytesCountries_MapReferenceId]
GO

この外部キー制約を「WITH CHECK」と 2 番目の「CHECK CONSTRAINT」ステートメントなしで記述し、同じ機能が得られることを期待します。

テーブルの外部キー制約を記述しているときに、「WITH CHECK」と別の「CHECK CONSTRAINT」ステートメントを使用することの価値を誰かが説明してくれますか?

または、以下のコードは完全に/機能的に上記のコードと同等ですか?

ALTER TABLE [dbo].[GeoBytesCountries]  
ADD CONSTRAINT [FK_GeoBytesCountries_MapReferenceId] 
FOREIGN KEY ([MapReferenceId]) 
REFERENCES [dbo].[GeoBytesMapReferences] ([MapReferenceId])
GO
4

1 に答える 1

0

私の見方では、2 段階のアプローチにより、部品が故障したと仮定して、少なくともより多くの「悪い」データが入らないようにすることができwith checkます。つまり、制約は存在し、その時点から DML に適用されますが、既存のデータをクリーンアップして信頼できる制約にする必要がある場合があります。

于 2013-06-23T15:54:37.857 に答える