列に一意制約(ユニーク制約)を追加するには、ALTER TABLE~ADD CONSTRAINT UNIQUE句を使用します。
構文
- (列に一意制約を追加する)
- ALTER TABLE テーブル名 ADD [CONSTRAINT 制約名] UNIQUE(列名 [.. 列名]);
制約名は省略可能です。その場合デフォルト制約名(SYS_xxx)が自動で付加されます。
複数列に対して一意制約を設定することも可能です。
サンプル
例1)mytbl表の列「col1」に一意制約(制約名:seiyaku01)を設定する
1 |
ALTER TABLE mytbl ADD CONSTRAINT seiyaku01 UNIQUE(col1); |
例2)mytbl表の列「col1とcol2」に一意制約(制約名:seiyaku02)を設定する
1 |
ALTER TABLE mytbl ADD CONSTRAINT seiyaku02 UNIQUE(col1, col2); |
複数列に対しての一意制約は、複合一意制約と呼びます。
解説
- 一意制約ではNULLは許可されるため、NULL値の重複はOKとなります。
- NULL値の重複も避けたい場合は、同時にNOT NULL制約も設定してください。
→ 列にNOT NULL制約を追加/削除する - 既に重複値が存在する列に一意制約を追加しようとするとエラーが発生します。
→ [ORAエラー] ORA-02299: (XXX.XXX)を検証できません - キーが重複しています。 - 一意制約を削除したい場合は、以下ページをご覧ください。
→ (制約名から削除する場合):テーブルから制約を削除する
→ (列名を指定して削除する場合):列名指定で一意制約を削除する