2015-08-25 17 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]