UNIQUE制約

広告

カラムに含まれる値は重複することが出来ないように設定する方法について見ていきます。

構文としては下記のようになります。

create table table_name
   (column_name1 column_type UNIQUE, …);

カラムを指定する際に、"UNIQUE"を指定します。

では試してみます。

UNIQUEの設定

「sample3」というテーブルを作成し、「name」と「address」という2つのカラムを作成します。そして「name」カラムには「UNIQUE」制約を指定しておきました。UNIQUEを設定したテーブルを作成するといつもと違うメッセージが表示されますが、これは自動的にインデックスを作成するためのようです。

ではまず1行追加してみます。

UNIQUEの設定

次に「UNIQUE」が設定している「name」カラムに先ほどと同じ値を指定して行を追加してみます。

UNIQUEの設定

「name」カラムは「UNIQUE」制約を指定しているのに同じ値を追加しようとしたため、「ERROR: duplicate key violates unique constraint "sample3_name_key"」というエラーが発生しました。

また、「UNIQUE」制約は、制約が設定されたカラムに同じ値を持つ事が出来ないようにしますが、「NULL」は例外で複数のカラムで持つ事ができます。

UNIQUEの設定

もし「NULL」も複数持つ事が出来ないようにする場合は「NOT NULL」制約を合わせて設定して下さい。(その場合はどの行もNULLを持てなくなります)。

( Written by Tatsuo Ikura )