次の条件で、2 つの列 (id_1 と id_2) に一意のインデックス制約を作成しようとしています。
出来ますか?
ありがとう。
このような制限をサポートする宣言的な制約はありません。あなたが説明するシナリオは、一意の制約の要件を満たしていません。(制約を作成することはできますが、id_1 と id_2 に同じ値を持つ複数の行を追加することはできません。
この制限に基づいて挿入または更新を拒否することが意図されている場合は、行レベルのトリガーを使用してこれを実現できる可能性があります。
これらの行をチェックしてトリガーに統合するクエリを作成することで、これを行うことができます。制約ではそれを行うことができず、一意の制約ではできません。一意の制約は、行に一意の値を強制します。つまり、制約内の 1 つまたは複数のフィールドについて、2 つの行が同じ値を持つことはできません。
それは不可能です。との一意の制約はid_1
、id_2
各行に と の異なる (一意の) 組み合わせを強制id_1
しid_2
ます。それはあなたが説明していることとは正反対です。
トリガーを使用して要件を強制することもできますが、提供された情報が少ないため、それが最善の解決策であるかどうかはわかりません。
id_1
複合外部キーも解決策になる可能性がありますが、何を参照しているのかわからないid_2
ので、本当に言うのは難しいです。