我有3個表,tbl_image,tbl_vehicle_image和tbl_vehicle在觸發加入更新命令
tbl_vehicle_image解決tbl_image和tbl_vehicle之間的多對多關係
tbl_vehicle有LAST_MODIFIED_DATE
如何創建當我改變例如tbl_image.img_lnk時,使用tbl_vehicle_image查找tbl_vehicle中使用該圖像的所有記錄,並將其last_modified_date設置爲NOW()?
我有3個表,tbl_image,tbl_vehicle_image和tbl_vehicle在觸發加入更新命令
tbl_vehicle_image解決tbl_image和tbl_vehicle之間的多對多關係
tbl_vehicle有LAST_MODIFIED_DATE
如何創建當我改變例如tbl_image.img_lnk時,使用tbl_vehicle_image查找tbl_vehicle中使用該圖像的所有記錄,並將其last_modified_date設置爲NOW()?
你可以這樣做:
DELIMITER $$;
create TRIGGER UpdateLastmodifiedDate AFTER UPDATE ON tbl_image
FOR EACH ROW
BEGIN
UPDATE tbl_vehicle v
INNER JOIN tbl_vehicle_image vi ON v.vehicleId = vi.vehicleID
INNER JOIN tbl_image i ON vi.imageid = i.id
SET v.lastmodified_date = NOW()
WHERE i.img_lnk = NEW.img_lnk;
END$$
CREATE TRIGGER `trig_after_image_update` AFTER UPDATE ON `tbl_image`
FOR EACH ROW
if old.img_lnk<>NEW.img_lnk
then
update tbl_vehicle set last_modified_date=NOW() where id in (select vehicle_id from tbl_vehicle_image where image_id=OLD.id);
end if;
我沒有你的表的所有字段名稱,以便改變這些。我用id作爲對應表的主鍵。
這兩個答案我越來越'語法錯誤,意外結束' –
@KellyLarsen - 嘗試'END $$'而不是'END'。 –
@KellyLarsen在起始行使用'set delimiter $$'。 –
因爲它討論了這個答案,所以我會發布她的,我在頂部添加了DELIMITER $$,並在最後一行放置了分號(WHERE i .....)並且語法問題消失了 –
yep,just got它去,精美的作品:) –