2015-08-25 16 views
0

许多开发人员使用Key作为主键名,但为什么Transact-SQL将其视为保留字?为什么'Key'是Transact-SQL中的保留字?

https://msdn.microsoft.com/en-us/library/ms189822.aspx

而且,使用“钥匙”作为主键的名称是反模式?

+12

*“很多开发人员使用Key作为主键名”* - 他们是否?从未见过它。通常我会看到ID或更具体的名称,如FooBarID。 – GolezTrol

+1

它用于T-SQL来定义键,这就是为什么它是保留的。如果你想使用它作为列名,你很可能必须将它包装在括号中,如下所示:[Key] – HaukurHaf

+1

为什么它不是保留字?它在TSQL中有特定的含义,如“TABLE”或“SELECT”。它怎么可能不是一个保留字? –

回答

1

KEY是ANSI SQL标准中的一个保留字(至少从SQL-92开始,可能是最早的版本),这也是T-SQL将其视为保留的一个很好的理由。

来源是BNF语法维护here

至于是否使用KEY作为主键名称是反模式或不使用,我会说它就像使用其他保留字一样。这当然只是一个意见(根据我的经验和惯例),该标准允许通过delimited identifier机制使用保留字作为标识符。

在旁注中,我不认为我见过任何人使用key作为列名。

2

我不明白你为什么在这里选出保留关键字KEY。你会问关于SELECTFROMWHEREGROUP的相同问题吗?如果是这样,为什么你觉得这些单词是保留关键字令人惊讶呢? (曾试图用任何编程语言调用变量if?)如果不是,为什么不呢?

像刚刚提到的关键字一样,KEY仅仅是另一个(部分)关键字,例如,定义PRIMARY KEYFOREIGN KEY约束;这是一个相当普遍的事情,而不是一些罕见的角落案例。

如果你想打电话给你的钥匙KEY(这对我来说似乎很不寻常,以前从未见过),然后把它放在方括号中:[KEY]