2016-08-25 39 views
0

テーブルSへの参照を必要とする外部キーをテーブルPに作成するこのコードがあります。現時点では、私がfkになりたいカラムはbigintで、nullではなく、デフォルトは0です。これが障害ですか? StoredFile列のIDはNULLではなく、bigintデータで埋められます。 FKを追加するためにALTER TABLEステートメントがFOREIGN KEY制約と競合しました。sql

alter table P add constraint fk_fileId_p foreign key (fileID) 
    references Ss(id) 
+0

外部キーを作成する列にはデフォルト値がありますか?あなたのテーブルデザインの欠陥のように思えます。なぜなら、外部キーを動作させるために、そのデフォルト値で参照テーブルにダミーレコードを作成する必要があるからです。また、このテーブルに挿入するすべての新しいレコードは、このダミーレコードにリンクされます。それは本当にあなたが望むものですか? – GuidoG

+0

はい。親テーブルが更新された場合、私は子テーブルも更新できるようにしたい。 – Jokes1994

+0

Jokes1994あなたはそれが何を意味するのか分かりません。外部キーは、何らかの形で子テーブルを更新しません。ここで何を達成しようとしていますか? – GuidoG

答えて

2

、あなたはstorefileID 0(例えばダミーレコードを追加することによって)、テーブルStoredFileに存在していることを確認する必要があります - それ以外の場合はFKの検証が失敗し、制約を作成することはできません。

+0

デフォルト値を持たない場合、列を作成するalter tableによってデフォルト値のあるエラーが発生します – Jokes1994

+0

これが理由ですID 0のダミーレコードを追加する必要があります。後でフィルタリング/表示方法の変更ができますが、FKを使用するにはダミーレコードが必要です。 – Tyron78

関連する問題