SQL Server导出表脚本中EPK约束命名含义咨询
关于SQL Server表脚本中EPK约束名称的疑问
我近期从SQL Server现有数据库中导出了一张表的脚本,内容如下:
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[queuemembership]( [Id] [uniqueidentifier] NOT NULL, [versionnumber] [bigint] NULL, [queueid] [uniqueidentifier] NULL, [queuemembershipid] [uniqueidentifier] NULL, [systemuserid] [uniqueidentifier] NULL, CONSTRAINT [EPK[dbo]].[queuemembership]]] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
我对约束语句[EPK[dbo]].[queuemembership]]] PRIMARY KEY CLUSTERED中的EPK部分不熟悉,重新创建表时可替换该内容,猜测它是外部元数据,希望了解其具体含义。
解答
这个EPK[dbo].[queuemembership]]]是SQL Server中主键约束的自定义命名,其中EPK大概率是Extended Primary Key(扩展主键)的缩写,这类命名常见于由自动化工具或特定业务系统(比如Dynamics CRM)自动生成的数据库对象。
- 它本质就是约束对象的标识名称,完全不影响主键的核心功能,你重新建表时可以随意替换成更符合自己命名规范的名称,比如
PK_queuemembership这种常规写法。 - 脚本里的名称存在语法小瑕疵(多了多余的闭合方括号),正确的规范写法应该类似
[EPK_queuemembership],不过SQL Server的解析器会自动兼容这类小错误。 - 它并非外部元数据,就是数据库内部的约束对象名称,只是生成它的工具用
EPK前缀来标记这是系统自动创建的主键约束,和手动创建的主键做区分。
内容的提问来源于stack exchange,提问作者Mutation Person
相关产品推荐
相关产品推荐

