38

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)

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

4

3 に答える 3

63

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

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

Oracle/PLSQL: 一意の制約

于 2013-06-27T12:48:13.327 に答える
9

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

ALTER TABLE table_name
   DROP CONSTRAINT myUniqueConstraint;

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

例えば:

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

UNIQUE Con​​straint の詳細な説明はこちら。

于 2013-06-27T12:47:58.557 に答える
2

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

CREATE UNIQUE INDEX constraint_name ON table_name (B、C、D)

于 2015-05-14T06:09:22.423 に答える