【发布时间】:2012-03-26 10:43:15
【问题描述】:
我在为项目的数据库创建触发器时遇到问题
我以前从未在 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 尚不支持“一个表具有相同操作时间和事件的多个触发器”
【问题讨论】:
-
不带delete语句试试看,是否依旧报错
-
a) 从您的 DELETE 语句中删除
SELECT * FROM mms_carsb) 您可能还对 dev.mysql.com/doc/refman/5.1/en/partitioning.html 感兴趣(因为您已经有一个整数字段来确定状态) -
会尝试这些东西,感谢您的反馈