web-dev-qa-db-ja.com

Oracleの列の組み合わせに一意の制約を与える方法は?

4列のテーブルがあります

各列はA、B、C、Dになります

列Aは主キーです。列Bには一意の名前の制約があります。

ここで、列Bの一意の制約を削除し、列B、C、およびDを組み合わせて一意の制約を指定します。したがって、テーブルでは、列B、C、およびDの特定の値を持つ1つの行のみが許可されます。

このタイプの制約をどのように与えることができますか?

私は次のような複合ユニークキーを与えようとしました:

ALTER TABLE TABLENAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE (COLUMN_B, COLUMN_C, COLUMN_D)

ただし、一意キー制約の組み合わせをチェックするのではなく、制約のいずれかが存在するかどうかをチェックしています。

28
Nigel Thomas

それらの列に一意のキーを作成します

ALTER TABLE YourTable
  add CONSTRAINT YourTable_unique UNIQUE (B, C, D);

Oracle/PLSQL:一意の制約

49
saamorim

まず、以下のALTERクエリを使用して、既存の制約を削除する必要があります。

ALTER TABLE table_name
   DROP CONSTRAINT myUniqueConstraint;

これで、必要な列の組み合わせでキーワードUNIQUEを使用して、 [〜#〜] unique [〜#〜] 制約を作成できます。

例:

ALTER TABLE table_name
   ADD CONSTRAINT myUniqueConstraint UNIQUE(B, C, D);

UNIQUE制約の詳細な説明はこちら

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Table_nameのCREATE UNIQUE INDEX constraint_name(B、C、D)

1
Sunil Kumar