2014-10-30 31 views
0

我試圖從table2複製一個值到table1與觸發器之前,表1被插入一個數據,我遇到的問題是,每當我插入一個新行into table1我得到一個錯誤,說該列不能爲空,在我的情況下,該列是彩色的。 僅供參考表1中有一個名爲「色」以及表2從一個表到另一個mysql的複製值給我錯誤

列這是我的代碼有

CREATE 
TRIGGER `some_trigger` BEFORE INSERT ON `table1` 
FOR EACH ROW BEGIN 
SET new.color = 
(
    SELECT table2.color 
    FROM table1 
    JOIN table2 ON table1.aforeignkeycolumn = table2.aprimarykeycolumn 
    WHERE table1.id = new.id --this should be the new row 
); 
END; 

如果我有這樣它會工作,但我需要得到的標識行多數民衆贊成把它插入到表1

CREATE 
TRIGGER `some_trigger` BEFORE INSERT ON `table1` 
FOR EACH ROW BEGIN 
SET new.color = 
(
    SELECT table2.color 
    FROM table1 
    JOIN table2 ON table1.aforeignkeycolumn = table2.aprimarykeycolumn 
    WHERE table1.id = 10 
); 
END; 

任何幫助表示讚賞

回答

0

如何插入後做一個觸發器?

CREATE TRIGGER `some_trigger` AFTER INSERT ON `table1` 
FOR EACH ROW BEGIN 
    SELECT new.color := table2.color 
    FROM table1 JOIN 
     table2 
      ON table1.aforeignkeycolumn = table2.aprimarykeycolumn 
    WHERE table1.id = new.id --this should be the new row 
END; 
+0

我收到此錯誤。 「更新一個新行是不允許在後觸發」 – user3768541 2014-10-30 16:48:17

+0

我認爲這就是爲什麼我使用'之前插入'我只需要知道即將插入的ID' – user3768541 2014-10-30 17:24:35

+1

爲什麼你把值放在表中而不是在需要時動態地查看它? – 2014-10-30 21:55:17

相關問題