マイテーブルスキーマの最大のものである:SQL:制約の少なくとも一つを強制&&各キー
r(int aID not null, int bID not null, bool main)
主キー(AID、BID)。 aIDとbIDはどちらも外部キーです(異なる表を参照しています)。
私はすべてのaIDに対して常にmain = trueの1つと1つのbIDしかないことを強制したいと思います。
どのようにすればDBレベルで行うことができますか? constraint unique (aID, main)
を追加して「最大1」を適用することができます。また、mainはtrueまたはNULLのいずれかです。
"少なくとも1"の部分はどうですか?
PS:MySQLでの作業
編集:解説のためのデータの例: aIDとbIDのさまざまな組み合わせを使用できますが、各aIDでは1つの組み合わせだけでもmain = trueとなります。 デモデータ:
1, 2, true
1, 3, NULL
1, 4, NULL
1, 5, true <- wrong, only one main=true
...
おそらく私はそれを正しく説明しなかった、更新された元の記事を見てください。ありがとうございました! –
私は自分の答えを編集します、その2番目のバージョンがもっと役立つでしょう、少なくとも私はそう望みます。 –