2014-11-23 48 views
0

我從表ItemBorrower創建一個觸發器,用於更新表項中的字段。當ItemBorrower獲取插入的新條目時,Item表中的currentDate字段應該更新爲今天的日期。這裏是我的觸發器:如何更正MySQL「BEFORE INSERT」觸發器的語法?

CREATE TRIGGER checkoutItem BEFORE INSERT ON ItemBorrower 

FOR EACH ROW UPDATE Item 
BEGIN 
    SET Item.checkoutDate = CURDATE() 
    WHERE NEW.itemID = Item.itemID 

END; 

而且有錯誤,我得到的是,最後一行:

您的SQL語法錯誤;檢查 對應於你的MySQL服務器版本在第8行

我用分隔符各地播放(刪除它使用 附近「END」正確的語法手冊,加入了「;」項目後, .itemID),但沒有明顯的效用。可能是因爲我做的那件事完全錯了。

任何幫助表示讚賞!

感謝,

喬納

回答

2

我不是100%確定什麼是你想從觸發器來實現。我假定你有一個名爲item的表格,並且想要更新checkoutDate列,並且當前日期爲item.itemID = the last insert idItemBorrower

試試這個代碼

delimiter // 
CREATE TRIGGER checkoutItem BEFORE INSERT ON ItemBorrower 
FOR EACH ROW 
BEGIN 
    UPDATE Item 
    SET checkoutDate = CURDATE() 
    WHERE itemID = NEW.itemID; 

END; // 
delimiter ; 
+0

像。 A.魅力。爲了確保我理解發生了什麼,NEW應該與正在創建的實際新的itemID一致,並且由於SET和WHERE與UPDATE項對應,「WHERE itemID」已經知道「itemID」引用了Item表。我對嗎?非常感謝! – Jona 2014-11-23 20:47:04

+1

NEW.itemID引用添加ItemBorrower.itemID的行。左引用item.itemID上的itemID。 – Jaylen 2014-11-23 21:08:04