UNIQUE 制約は、データベーステーブル内の各レコードを一意に識別します。
UNIQUE および PRIMARY KEY の両制約は、列または列のセットに対する一意性の保証を提供します。
PRIMARY KEY 制約には、UNIQUE 制約が自動的に定義されます。
テーブルごとに多数の UNIQUE 制約を設定できますが、PRIMARY KEY 制約はテーブルに1つだけ設定できることに注意してください。
次の SQL は、"Persons" テーブルを作成するときに、"P_Id" に UNIQUE 制約を指定します:
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
MySQL:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)
UNIQUE 制約のネーミングを可能にするため、および複数の列に UNIQUE 制約を定義するためには、次の SQL 構文を使用します:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)
作成済みテーブルの "P_Id" 列に、UNIQUE 制約を作成するためには、次の SQL を使用します:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD UNIQUE (P_Id)
UNIQUE 制約のネーミングを可能にするため、および複数の列に UNIQUE 制約を定義するためには、次の SQL 構文を使用します:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
UNIQUE 制約を削除するには、次の SQL を使用します:
MySQL:
ALTER TABLE Persons
DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID