许多开发人员使用Key作为主键名,但为什么Transact-SQL将其视为保留字?为什么'Key'是Transact-SQL中的保留字?
https://msdn.microsoft.com/en-us/library/ms189822.aspx
而且,使用“钥匙”作为主键的名称是反模式?
许多开发人员使用Key作为主键名,但为什么Transact-SQL将其视为保留字?为什么'Key'是Transact-SQL中的保留字?
https://msdn.microsoft.com/en-us/library/ms189822.aspx
而且,使用“钥匙”作为主键的名称是反模式?
KEY
是ANSI SQL标准中的一个保留字(至少从SQL-92开始,可能是最早的版本),这也是T-SQL将其视为保留的一个很好的理由。
来源是BNF语法维护here。
至于是否使用KEY
作为主键名称是反模式或不使用,我会说它就像使用其他保留字一样。这当然只是一个意见(根据我的经验和惯例),该标准允许通过delimited identifier
机制使用保留字作为标识符。
在旁注中,我不认为我见过任何人使用key
作为列名。
我不明白你为什么在这里选出保留关键字KEY
。你会问关于SELECT
,FROM
,WHERE
或GROUP
的相同问题吗?如果是这样,为什么你觉得这些单词是保留关键字令人惊讶呢? (曾试图用任何编程语言调用变量if
?)如果不是,为什么不呢?
像刚刚提到的关键字一样,KEY
仅仅是另一个(部分)关键字,例如,定义PRIMARY KEY
或FOREIGN KEY
约束;这是一个相当普遍的事情,而不是一些罕见的角落案例。
如果你想打电话给你的钥匙KEY
(这对我来说似乎很不寻常,以前从未见过),然后把它放在方括号中:[KEY]
。
*“很多开发人员使用Key作为主键名”* - 他们是否?从未见过它。通常我会看到ID或更具体的名称,如FooBarID。 – GolezTrol
它用于T-SQL来定义键,这就是为什么它是保留的。如果你想使用它作为列名,你很可能必须将它包装在括号中,如下所示:[Key] – HaukurHaf
为什么它不是保留字?它在TSQL中有特定的含义,如“TABLE”或“SELECT”。它怎么可能不是一个保留字? –