在创建表时设置唯一约束
SQL Server:
sql
CREATE TABLE MyTable (
ID INT PRIMARY KEY, -- 主键自动生成唯一约束
Name VARCHAR(50) UNIQUE -- 唯一约束
);
MySQL:
sql
CREATE TABLE MyTable (
ID INT AUTO_INCREMENT PRIMARY KEY, -- 主键自动生成唯一约束
Name VARCHAR(50) UNIQUE
);
Oracle:
sql
CREATE TABLE MyTable (
ID NUMBER PRIMARY KEY, -- 主键自动生成唯一约束
Name VARCHAR2(50) UNIQUE
);
PostgreSQL:
sql
CREATE TABLE MyTable (
ID SERIAL PRIMARY KEY, -- 主键自动生成唯一约束
Name VARCHAR(50) UNIQUE
);
在现有表上添加唯一约束
SQL Server:
sql
ALTER TABLE MyTable ADD CONSTRAINT UQ_Name UNIQUE (Name);
MySQL:
sql
ALTER TABLE MyTable ADD UNIQUE INDEX UQ_Name (Name);
Oracle:
sql
ALTER TABLE MyTable ADD UNIQUE (Name);
PostgreSQL:
sql
ALTER TABLE MyTable ADD UNIQUE (Name);
唯一约束的选项
CLUSTERED: 对于经常访问的列指定该选项以提高性能。
NONCLUSTERED: 对于不经常访问的列指定该选项。
FILLFACTOR (SQL Server): 指定唯一索引占用的数据页面的百分比。
注意事项
唯一约束仅允许表中存在一个特定的值。
如果尝试插入重复的值,数据库将引发错误。
唯一约束不能应用于允许 NULL 值的列。
唯一约束可以与其他约束(如主键或外键)结合使用。