2012-03-26 12 views
0

我有MySQL的触发器 - 复制行从活动表要归档表格

我从来没有在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还不支持“用相同的动作时间和事件的一个表中的多个触发器”

+0

尝试没有delete语句,并查看是否错误仍然ocurring – 2012-03-26 10:54:17

+0

一)删除'选择你的DELETE语句B * FROM mms_cars')您可能也有兴趣https://开头开发。 mysql.com/doc/refman/5.1/en/partitioning.html(因为你已经有一个整数字段tht确定状态) – VolkerK 2012-03-26 11:27:57

+0

将尝试这些事情,感谢您的反馈 – BarryH1987 2012-03-26 11:55:10

回答

0

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

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

1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

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