2016-12-25 28 views
1

我有一個看起來像這樣的表模式:基於此模式插入數據的正確結構是什麼?

mysql> desc category; 
+-------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+-------------+--------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| name  | varchar(255) | NO |  | NULL |    | 
| create_date | datetime  | NO |  | NULL |    | 
+-------------+--------------+------+-----+---------+----------------+ 
3 rows in set (0.01 sec) 

我試圖插入數據,我不斷收到此錯誤:

mysql> INSERT INTO category (id, name, create_date) VALUES (NULL, Family Events, 2016-25-12 00:00:00), (NULL, Work Events, 2016-25-12 00:00:00); 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Events, 2016-25-12 00:00:00), (NULL, Work Events, 2016-25-12 00:00:00)' at line 1 

我已經嘗試了其他幾種方法具有相同的結果我還沒有找到任何好的文檔。

我嘗試這樣做:

mysql> INSERT INTO category(id, name, create_date) VALUES(NULL, 'Family Events', 'NOW()'); 

,並得到這個錯誤:

ERROR 1292 (22007): Incorrect datetime value: 'NOW()' for column 'create_date' at row 1 

回答

1

隨着OP agreed with my answer,我加入了。與你所遵循的是程序的問題,您應該'環繞您的​​字符串值:

-- If the column is a `DATETIME`, then use: 
VALUES (NULL, 'Family Events', NOW()), 
//------------^-------------^ 
-- If the column is a `TIMESTAMP`, then use: 
VALUES (NULL, 'Family Events', CURRENT_TIMESTAMP), 
//------------^-------------^ 

而且我使用CURRENT_TIMESTAMP的時間戳插入或者到NOW()。其他人已經指出的是

一件事,你並不需要,因爲它會自動它基於PRIMARY KEY添加額外的idINSERT,並因爲它需要NULL值,你可以完全擺脫它。

你最終的SQL應該像:

INSERT INTO category(name, create_date) VALUES('Family Events', CURRENT_TIMESTAMP); 
+1

與CURRENT_TIMESTAMP,當然引號的答案是解決方案。 – Daniel

+0

@Daniel謝謝...我已經添加了兩個變體... –

+0

@Daniel檢查我給出瞭解釋什麼時候使用...':)' –

相關問題