1

postgres sql を使用して、通常の外部キー制約のように別のテーブルに制限される外部キーの条件を設定する方法はありますが、0 の値が他のテーブルに存在しなくても存在できるようにします。例えば:

table_a:
  id

table_b:
  id
  foreign_key_on_table_a_id

table_a にはリストがあり、table_b は table_a に関連していますが、外部キー制約があります。また、table_a に 0 の ID がない場合でも、0 の値を許可したいと思います。

これは使用する正しい制約ですか? 値をtable_aに追加せずにこれを行う別の/より良い方法はありますか?

4

1 に答える 1

2

foreign_key_on_table_a_idNULL 値を許可するように変更します。次に、通常どおり FK を使用し、ゼロの代わりに NULL を入れます。別のテーブルを参照する列に NULL を含めることができます。

または、値が他のテーブルにある場合は true を返し、それ以外の場合は false を返す関数を作成してから、CHECK 制約を追加することもできます。

CHECK (your_column = 0 or the_function(your_column))

ただし、FK の通常のカスケード動作は得られず、この CHECK は大規模なクラッジです。

于 2012-10-25T03:34:07.763 に答える