0

データベース制約を追加して、行が 2 つの列のいずれかに単一の値を持つように制限することはできますか? 説明しましょう:

Sales Order Table
---------------------------------
id  |  person_id  |  company_id |

この行は次のようになります。

id | person_id | company_id |
---|-----------|------------|
 1 |         1 |       null |
 2 |         2 |       null |
 3 |      null |          1 |
 4 |      null |          2 |

この図では、販売注文のソースは個人または会社です。それはどちらかであり、それ以上でも以下でもありません。私の質問は次のとおりです。データベースを制約して、1) 両方のフィールドを null にできず、2) 両方のフィールドを非 null にできないようにする方法はありますか? つまり、1 つは null でなければならず、もう 1 つは非 null でなければなりません...

2 つのテーブル (個人、会社) を 1 つの顧客テーブルに結合するという最初の反応があるかもしれません。しかし、私が示している例は、非常に単純な例にすぎません。私のアプリケーションでは、扱っている 2 つのフィールドを 1 つに結合することはできません。

私が使用している DBMS は MySQL です。

質問が理にかなっていることを願っています。よろしくお願いします。

4

1 に答える 1

1

これはショックかも…

CHECKmysql は制約をサポートしていません。それらを定義することはできますが、完全に無視されます。

これらは、他のデータベースの構文との互換性を提供するためにのみ構文で許可されています。


更新/挿入時にトリガーを使用SIGNALし、例外を発生させるために使用できます。

于 2013-05-05T03:50:01.987 に答える