2

mmseでSQL Server Express 2008を使用しています。 私はテーブル間の外部キー制約を設定し、on delete制約を "set null"に設定しました。 しかし、それは制約を強制するようではなく、私は今削除された行のフィールドにIDが残っています。ここSQL Serverの外部キー "Delete Delete Null"制約が機能しません

は、私はそれが私が間違って行くことができ

を設定しているかの小さなscreen shoトンのですか?

Table 1Table 2

+0

これを設定するだけですか?もしそうならSSMSでセーブを押しましたか?孤立した行を残す場合、FK制約を無効にするか、存在しないようにする必要があります。それ以外の場合は、両方のテーブルに完全なDDLをスクリプト化できますか? –

+0

うん。 VStudioを保存して使用し、スキーマがDesignerに渡されました。それでも動作しません。私はSSMSで削除を行うのか、VStudioを通してプログラム的に行うのか。 – BastanteCaro

+0

両方のテーブル(FK定義を含む)のDDLをスクリプト化して質問に追加できますか? –

答えて

3

あなたは私のために罰金作品を掲載DDL。

declare @id int; 
INSERT INTO DeliveryAreas(Description,Rate) VALUES ('To Delete', 100) 
set @id=SCOPE_IDENTITY() 
INSERT INTO Customer(FName,DeliveryAreaID) VALUES ('Test',@id) 
SELECT ID,FName,DeliveryAreaID FROM Customer 
DELETE FROM DeliveryAreas WHERE [email protected] 
SELECT ID,FName,DeliveryAreaID FROM Customer 

戻り

ID   FName       DeliveryAreaID 
----------- ------------------------------ -------------- 
1   Test       3 


ID   FName       DeliveryAreaID 
----------- ------------------------------ -------------- 
1   Test       NULL 

は、あなただけの有効状態をエンドを再確認することはできますか?

SELECT is_disabled,* FROM sys.foreign_keys where name='FK_Customer_DeliveryAreas' 
+0

ありがとうございました。それは今完璧に動作するようです。以前は何が問題だったのか分かりません。私は何も変えなかったが、助けてくれてありがとう。 – BastanteCaro

関連する問題