0

「テーブルA」があるとします:

Id | Col A
1    Z
2    I
3    Null

...そして、この形式を持つ n 個のテーブル:

Id | A_FK | OtherInfo
1    1      "Some info"
2    2      "Some more info"
3    3      "Blah"

...ここで、A_FK は「テーブル A」ID への外部キー参照です。

したがって、1 つの「テーブル A」と n 個の「テーブル B」があります。これらの「B」テーブルの場合、一部のテーブルは A_FK の既存の値を持つことができます (制約は必要ありません)。他の「B」テーブルは、対応するレコードの列 A に Null 値がない A_FK 値のみを参照できます。

だから私の質問は:

  1. これを処理するための制約をどのように記述すればよいでしょうか (これは非常に簡単なことだと思います。記述する必要がなかっただけで、少し怠惰に感じています)。
  2. 制約は逆に機能しますか? 「B」テーブルにレコードを入力し、それがテーブル A の Id = 1 にリンクされているとします (テーブル B の制約が設定されています)。テーブル A の 1 の列 A = "Z" であるため、これで問題ありません。後で「Z」を Null に変更しようとすると、エラーが発生しますか?

前もって感謝します。

4

1 に答える 1

2

TableAで、(ID, ColA)に一意制約を作成し、「対応するレコードがCol AでNull値を持たない」テーブルで、ColA列を追加し、NOT NULLであることを確認し、FKを持ちます制約は、TableA の一意の制約を参照します。

これはあなたの両方の質問に答えます。

于 2010-09-16T19:24:11.553 に答える