我可以为 SQL Server 为我的唯一约束创建的索引指定一个名称吗?

sha*_*oth 6 index sql-server constraint ddl

在 SQL Server 中,我部署了一个带有UNIQUE约束的表:

CREATE TABLE [dbo].[Something] (
    [IdentityId]  UNIQUEIDENTIFIER UNIQUE NOT NULL DEFAULT NEWID()
    -- Whatever else...
)
Run Code Online (Sandbox Code Playgroud)

这使得 SQL Server 创建一个唯一索引来支持约束。该索引将自动生成名称,看起来像

UQ__tmp_ms_x__1F778345BD
Run Code Online (Sandbox Code Playgroud)

where 的UQ意思是“独特的”,其余的都很好,对我来说是随机的。如果我对同一个表有两个唯一约束,它们看起来就像两个随机字符串,这不是很方便。

创建唯一约束时,是否可以指定在后台创建的索引的名称?

Sco*_*red 7

参考Create Unique Constraints的文档,您应该能够使用以下内容:

CREATE TABLE [dbo].[Something](
    [IdentityId] [uniqueidentifier] NULL,
 CONSTRAINT [MyUniqueConstraintName] UNIQUE NONCLUSTERED 
(
    [IdentityId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)