在触发器中加入update命令

时间:2012-11-18 08:33:07

标签: mysql join triggers sql-update

我有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()?

2 个答案:

答案 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$$