创建唯一约束
适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库 Azure SQL 托管实例
你可以通过使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中创建唯一约束,以便确保在未参与主键的特定列中不输入重复值。 创建唯一约束会自动创建相应的唯一索引。
注意
有关 Azure Synapse Analytics 中的唯一约束的信息,请参阅 Azure Synapse Analytics 中的主键、外键和唯一键。
权限
需要对表的 ALTER 权限。
使用 SQL Server Management Studio (SSMS)
使用 SSMS 创建唯一约束
在对象资源管理器中,右键单击要为其添加唯一约束的表,然后选择“设计”。
在“表设计器”菜单上,选择“索引/键”。
在“索引/键”对话框中,选择“添加”。
在常规下的网格中,选择类型,从该属性右侧的下拉列表框中选择唯一键,然后选择关闭。
在“文件”菜单上,选择“保存table_name” 。
使用 Transact-SQL
使用 Transact-SQL 创建唯一约束
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在“标准”栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 该示例将创建表
TransactionHistoryArchive4
,并且在列TransactionID
上创建唯一约束。USE AdventureWorks2022; GO CREATE TABLE Production.TransactionHistoryArchive4 ( TransactionID int NOT NULL, CONSTRAINT AK_TransactionID UNIQUE(TransactionID) ); GO
在现有表中创建唯一约束
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在“标准”栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 该示例在表
PasswordHash
中的PasswordSalt
和Person.Password
列上创建唯一约束。USE AdventureWorks2022; GO ALTER TABLE Person.Password ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt); GO
在新表中创建唯一约束
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在“标准”栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 该示例创建一个表并在
TransactionID
列上定义唯一约束。USE AdventureWorks2022; GO CREATE TABLE Production.TransactionHistoryArchive2 ( TransactionID int NOT NULL, CONSTRAINT AK_TransactionID UNIQUE(TransactionID) ); GO
在可为空的列上创建唯一约束
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在“标准”栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 该示例使用
CREATE UNIQUE INDEX
语法创建已筛选的唯一约束,只对非NULL
值强制实施唯一性。USE AdventureWorks2022; GO CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion ON dbo.AdventureWorksDWBuildVersion (DBVersion) WHERE (DBVersion IS NOT NULL); GO