許多開發人員使用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」。它怎麼可能不是一個保留字? –