2

削除オプションで別の外部キーをテストしています。カスケードに疲れました。アクションはありません。nullに設定します。デフォルトに設定する以外はすべて機能します。SQL SERVERはエラーを報告するだけです:

メッセージ547、レベル16、状態0、1行目DELETEステートメントがFOREIGNKEY制約「FK_child_parent」と競合しました。データベース「Test」、テーブル「dbo.Test_parent」、列「no」で競合が発生しました。ステートメントは終了されました。

create table Test_parent(
    [no] int primary key    
)

CREATE TABLE test_child(
     SUB1 INT,
    [NO] int DEFAULT 0 CONSTRAINT FK_child_parent REFERENCES Test_parent([no]) ON DELETE set default
)

insert into Test_parent values(1),(2)

insert into test_child values(1, 1)
insert into test_child values(2, 1)

delete from Test_parent
4

1 に答える 1

1

親テーブルを削除すると、子で設定されたデフォルトがトリガーされます。DBは、子レコードをデフォルトに設定しようとします0。ただし0、親テーブルにレコードがないため、外部キー違反が発生します。

于 2012-11-16T15:29:46.537 に答える