1 つのテーブルがあり、一意の値の制約を持つ2 つの列AとBが含まれています。ユーザーが新しい値A1とB1をデータベースに入力すると、 A1がA列に存在せず、 B1もB列に存在しないことを確認したい。
- 編集
これらの 2 つの列は、データベース内で既に一意です。指定された値を検索するクエリを作成したいのですが、戻り値が null の場合、ユーザーは新しい値A1とB1を追加できます。一致した場合は、これらの値を追加できないというユーザー メッセージを表示します。
1 つのテーブルがあり、一意の値の制約を持つ2 つの列AとBが含まれています。ユーザーが新しい値A1とB1をデータベースに入力すると、 A1がA列に存在せず、 B1もB列に存在しないことを確認したい。
- 編集
これらの 2 つの列は、データベース内で既に一意です。指定された値を検索するクエリを作成したいのですが、戻り値が null の場合、ユーザーは新しい値A1とB1を追加できます。一致した場合は、これらの値を追加できないというユーザー メッセージを表示します。
どれが欲しいですか?
各オプションには、一意の制約 (またはインデックス) が必要です。
すべての SQL 方言で、制約に複数の列を設定できます
クラシック SQL はこれになります。ここでは A と B が varchar であると仮定します
INSERT mytable (A, B)
SELECT 'A1', 'B1'
WHERE NOT EXISTS (SELECT * FROM mytable WHERE A= 'A1' AND B = 'B1')
これは並行性にとって安全ではないため、より良いオプションがあります
また、通常、最初にテストしたり、ユーザーに報告したり、書き込みを許可したりしないことに注意してください。SELECT とその後の INSERT の間に値が書き込まれるという保証はありません。