PostgreSQLのUNIQUEインデックスの例


  1. 列に一意の制約を追加する例:
-- テーブル作成
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(255) UNIQUE,
  email VARCHAR(255) UNIQUE
);
-- データ挿入
INSERT INTO users (username, email) VALUES ('john', '[email protected]');

上記の例では、usernameemail列に一意の制約が設定されています。そのため、同じ値が重複して挿入されることはありません。

  1. 複数の列に一意の制約を追加する例:
-- テーブル作成
CREATE TABLE purchases (
  id SERIAL PRIMARY KEY,
  user_id INTEGER,
  product_id INTEGER,
  CONSTRAINT unique_purchase UNIQUE (user_id, product_id)
);
-- データ挿入
INSERT INTO purchases (user_id, product_id) VALUES (1, 100);

上記の例では、user_idproduct_idの組み合わせが一意であることを保証するため、UNIQUE制約を追加しています。

  1. 部分的な一意の制約を作成する例:
-- テーブル作成
CREATE TABLE products (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255),
  is_active BOOLEAN,
  CONSTRAINT unique_active_product UNIQUE (name) WHERE (is_active = true)
);
-- データ挿入
INSERT INTO products (name, is_active) VALUES ('Product 1', true);

上記の例では、name列がis_activetrueの場合にのみ一意であることを保証する部分的な一意の制約を設定しています。

これらはいくつかの基本的なUNIQUEインデックスの例です。UNIQUEインデックスは、データベース内の重複を防ぐために非常に便利です。具体的な要件に合わせて適切なUNIQUEインデックスを設計することが重要です。