1

1 つのテーブルがあり、一意の値の制約を持つ2 つの列ABが含まれています。ユーザーが新しい値A1B1をデータベースに入力すると、 A1A列に存在せず、 B1B列に存在しないことを確認したい。

- 編集

これらの 2 つの列は、データベース内で既に一意です。指定された値を検索するクエリを作成したいのですが、戻り値が null の場合、ユーザーは新しい値A1B1を追加できます。一致した場合は、これらの値を追加できないというユーザー メッセージを表示します。

4

1 に答える 1

1

どれが欲しいですか?

  1. 他の列とは独立した一意の
  2. B 他の列とは独立して一意
  3. 他の列とは独立して一意の A と B のペア

各オプションには、一意の制約 (またはインデックス) が必要です。

  1. B
  2. 両方 (A,B)

すべての 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 の間に値が書き込まれるという保証はありません。

于 2013-05-20T13:16:33.797 に答える