首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本输出表脚本中不熟悉的SQL语法

脚本输出表脚本中不熟悉的SQL语法
EN

Stack Overflow用户
提问于 2022-09-01 14:46:20
回答 1查看 36关注 0票数 1

最近,我从我们的一个SQL服务器上的现有DB中编写了一个表,这带来了以下辉煌的结果:

代码语言:javascript
复制
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的约束[EPK[dbo]].[queuemembership]]] PRIMARY KEY CLUSTERED

如果我从头开始重新创建该表,我可以用其他文本替换EPK,这使我认为这是某种外部元数据或其他什么。

有人能解释一下这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-01 15:05:18

我已经在注释中讨论过这一点,但是为了将其放入一个答案中,[EPK[dbo]].[queuemembership]]]是一个分隔符,它标识了一个名为EPK[dbo].[queuemembership]的对象(特别是一个CONSTRAINT),并正确地转义了这个值。

实际上,这是一个名称非常差的对象;它包含多个不同的字符,需要对名称进行分隔标识和需要转义的多个字符。任何右括号(])都需要转义,就像在字符串中使用单引号(')一样;将它们加倍。然后,由于所述右括号以及作为部分分隔符的左括号([)和句点(.),这意味着需要对整个值进行分隔。

因此,您将得到该值[EPK[dbo]].[queuemembership]]]。您还可以通过运行PRINT QUOTENAME(N'EPK[dbo].[queuemembership]');来重复检查。

老实说,我建议给您命名更好的CONSTRAINT,它不需要分隔标识或转义。PK_queuemembership可能不仅仅是好的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73571335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档