- Home ›
- PostgreSQLの使い方 ›
- テーブルの作成 ›
- HERE
UNIQUE制約
カラムに含まれる値は重複することが出来ないように設定する方法について見ていきます。
構文としては下記のようになります。
create table table_name (column_name1 column_type UNIQUE, …);
カラムを指定する際に、"UNIQUE"を指定します。
では試してみます。
「sample3」というテーブルを作成し、「name」と「address」という2つのカラムを作成します。そして「name」カラムには「UNIQUE」制約を指定しておきました。UNIQUEを設定したテーブルを作成するといつもと違うメッセージが表示されますが、これは自動的にインデックスを作成するためのようです。
ではまず1行追加してみます。
次に「UNIQUE」が設定している「name」カラムに先ほどと同じ値を指定して行を追加してみます。
「name」カラムは「UNIQUE」制約を指定しているのに同じ値を追加しようとしたため、「ERROR: duplicate key violates unique constraint "sample3_name_key"」というエラーが発生しました。
また、「UNIQUE」制約は、制約が設定されたカラムに同じ値を持つ事が出来ないようにしますが、「NULL」は例外で複数のカラムで持つ事ができます。
もし「NULL」も複数持つ事が出来ないようにする場合は「NOT NULL」制約を合わせて設定して下さい。(その場合はどの行もNULLを持てなくなります)。
( Written by Tatsuo Ikura )