MySQL触发器 - 从活动表复制一行到存档表

时间:2012-03-26 10:43:16

标签: php mysql triggers

我在为项目创建数据库触发器时遇到问题

我之前从未在MySQL中使用触发器,当我尝试执行下面的代码时,它说第4行的''错误...

这是代码

CREATE TRIGGER archiveCar AFTER UPDATE ON mms_cars
 FOR EACH ROW BEGIN 
  IF NEW.active=2 THEN
   INSERT INTO mms_cars_sold SELECT * FROM mms_cars WHERE ad_id = OLD.ad_id;
   DELETE FROM mms_cars SELECT * FROM mms_cars WHERE ad_id = OLD.ad_id;
  END IF;
END;

我不确定我是否正确创建了这个,所以请原谅任何业余错误。我的目标是在汽车状态设置为2(即已售出)时将活动表中的行信息复制到存档表,以便最大化活动表的搜索效率

希望有人可以帮助我

亲切的问候

百里

修改

我现在有了以下

DELIMITER //
CREATE TRIGGER archiveCar AFTER UPDATE ON mms_cars
FOR EACH ROW 
BEGIN 
 IF NEW.active=2 THEN
  INSERT INTO mms_cars_sold SELECT * FROM mms_cars WHERE ad_id=OLD.ad_id;
  DELETE FROM mms_cars WHERE ad_id=OLD.ad_id;
 END IF;
END //
DELIMITER;

它产生了这个错误:

1235 - 此版本的MySQL尚不支持“多个触发器,其中一个表具有相同的操作时间和事件”

2 个答案:

答案 0 :(得分:0)

  

1235 - 此版本的MySQL尚不支持“多重触发器”   与一个表'

具有相同的动作时间和事件

这意味着mms_cars已经有了更新触发器。

答案 1 :(得分:0)

您应该尝试在重新创建新触发器之前放下触发器。

DELIMITER //
DROP TRIGGER archiveCar;
CREATE TRIGGER archiveCar AFTER UPDATE ON mms_cars
...
DELIMITER;