PostgreSQLを使用してデータベースを構築する際、データの整合性を確保するために制約を利用することがあります。
その中でもよく使われるのがユニーク制約と複合ユニーク制約です。この記事では、これらの制約について詳しく解説します。
ユニーク制約 と 複合ユニーク制約
まず、設定方法を解説する前に、ユニーク制約と複合ユニーク制約について解説します。
ユニーク制約は、特定の列の値が重複しないようにする制約です。つまり、その列に含まれる値は一意である必要があります。
例えば、ユーザーテーブルでのメールアドレスやユーザー名は重複してはいけないでしょう。
複合ユニーク制約は、複数の列の組み合わせが重複しないようにする制約です。つまり、指定された複数の列の値の組み合わせが一意である必要があります。
例えば、ユーザーテーブルでのユーザー名とメールアドレスの組み合わせが重複してはいけないでしょう。
複合ユニーク制約 の設定方法
複合ユニーク制約を設定するには、UNIQUE
制約を使用し、括弧内で複数の列を指定します。
例えば、以下のように記述します。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100),
UNIQUE (username, email)
);
このようにすることで、username
列とemail
列の組み合わせが一意であることが保証されます。
既存のテーブルへの 複合ユニーク制約 の追加
既存のテーブルに制約を追加する場合は、ALTER TABLE
ステートメントを使用します。例えば、
ALTER TABLE users
ADD CONSTRAINT unique_username_email UNIQUE (username, email);
このようにして、既存のusers
テーブルに複合ユニーク制約を追加できます。
まとめ
ユニーク制約と複合ユニーク制約は、データベース内のデータの整合性を保つために重要な役割を果たします。
データの重複や矛盾を防ぐために、適切に制約を設定することが重要です。
PostgreSQLでは、UNIQUE
制約を使用してこれらの制約を簡単に設定できます。