テーブルにいくつかの参照整合性制約を記述してほしいという割り当てに取り組んでいます。Outcomes のすべての戦闘が Battles でも言及されていることを確認し、参照値を NULL に設定してすべての違反を処理するように求めています。
私は次のスキーマで作業しています
Battles(
name VARCHAR(255) PRIMARY KEY,
date VARCHAR(255),
)
Outcomes(
ship VARCHAR(255),
battle VARCHAR(255),
RESULT VARCAHR(255),
PRIMARY KEY(ship, battle)
)
次のように外国語キーを追加しようとしています:
alter table outcomes
add foreign key (battle)
references battles(name)
on delete set null
on update cascade;
次のエラーが表示されます。
SQL error:
ERROR: insert or update on table "outcomes" violates foreign key constraint "outcomes_battle_fkey"
DETAIL: Key (battle)=(Pearl Harbor
これは、「パール ハーバー」が OUTCOMES にあり、BATTLES にはないためです。知りたいのは、その事実を無視して外部キーを設定する方法があるかどうかです。