2009-11-30 38 views
2
CREATE TABLE findings (
    ident VARCHAR(28), 
    code VARCHAR(8), 
    when DATETIME, 
    ip VARCHAR(15) 
); 
+0

這不是查詢。查詢是一個以「SELECT」開頭的語句。 – 2009-11-30 17:44:41

+0

它也不是DDL。 DDL是語言的定義,而不是其中的語句。 – soulmerge 2009-11-30 19:15:50

回答

6

這個詞的時候。

在一些數據庫中,這是一個關鍵字。因此,在處理創建表指令時,您可能會從數據庫管理系統中獲得一些錯誤。

9

when是一個keyword in mysql,需要用反引號被引用:

CREATE TABLE `findings` (
    `ident` VARCHAR(28), 
    `code` VARCHAR(8), 
    `when` DATETIME, 
    `ip` VARCHAR(15) 
); 

編輯:已正確地指出了評論,這不是一個很好的解決方案。你最好爲你的專欄尋找另一個名字。

+2

更好的解決方案應該是永遠不要使用when字,即使引用。 – 2009-11-30 17:35:57

+0

+1,但轉義關鍵字可能比它的價值更麻煩。 – 2009-11-30 17:36:33

+0

一般而言,引用標識符沒有任何問題。唯一的實際問題是,對於MySQL,您必須使用反引號字符,而適當的ANSI SQL方法是在「DATETIME」時使用雙引號。 MySQL可以配置爲符合標準,但默認情況下不符合標準。 – bobince 2009-11-30 18:11:40

1

,如果你使用的時候只需用前綴的列名_那麼熱衷。

+0

你確定這不是DBMS特有的嗎? – 2009-11-30 17:43:08

+0

我相信它可以在MySQL 5.x中使用。您可以使用_when字段名稱選擇,插入,刪除,更新等。 – Kalpak 2009-12-01 08:05:24

1

順便說一下,使用行名稱,表格等的保留名稱不是一個好主意。