2013-03-21 75 views
0

當嘗試創建觸發器以將行從一個表插入另一個表時,出現語法錯誤...更新了過程中的日期和時間。這是我的查詢:通過mySQL觸發器將行插入到另一個表

INSERT INTO `second_table` (field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12) 
    (SELECT `field1`, `field2`, `field3`, `field4`, `field5`, `field6`, `field7`, `field8`, `field9` FROM `first_table` WHERE `field1` = NEW.`field1`), CURDATE(), NOW(), (SELECT `field12` FROM `second_table` WHERE `field1` = NEW.`field1`); 

當更新first_table時,此觸發器將運行。我不確定這是否是完成任務的正確方法。爲了簡單起見,我已經概括了字段和表名。

編輯:

這兩列之間的列是相同的。我只是希望能夠在觸發發生時更新日期和時間。這工作,但顯然只是複製以前的日期和時間:

INSERT INTO `second_table` (SELECT * FROM `first_table` WHERE `field1` = NEW.`field1`); 
+1

它可能是指定列的列表是個好主意。 – Kermit 2013-03-21 18:20:58

+0

不知道你是什麼意思......這兩個表格中的列是相同的,我只是希望能夠抓住觸發發生時的當前日期和時間。 – 2013-03-21 18:22:18

+1

沒關係。這是不好的做法。如果目標表更改列順序或添加/移除列會發生什麼? – Kermit 2013-03-21 18:23:00

回答

2

嘗試:

INSERT INTO `second_table` (field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12) 
(SELECT `field1`, `field2`, `field3`, `field4`, `field5`, `field6`, `field7`, `field8`, `field9`, CURDATE() AS `field10`, NOW() AS `field11`, `field12` FROM `first_table` WHERE `field1` = NEW.`field1`); 
相關問題