我有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()?
答案 0 :(得分:2)
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作为相应表的主键。
答案 1 :(得分:1)
你可以这样做:
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$$