在MySQL中,我试图定义如下触发器:
DELIMITER $$
CREATE TRIGGER vipInvite
AFTER INSERT ON meetings
FOR EACH ROW
BEGIN
IF(NOT EXISTS (SELECT * FROM participants
WHERE meetid = NEW.meetid AND pid ='vip'))
THEN
IF(EXISTS(SELECT * FROM meetings WHERE meetid = NEW.meetid AND slot > 16))
THEN
INSERT INTO participants(meetid, pid)
VALUES (NEW.meetid,(SELECT userid
FROM people WHERE people.group = 'tap' GROUP BY invite));
END IF;
END IF;
END $$
DELIMITER ; 产生此错误:
这个版本的MySQL还不支持一个表具有相同操作时间和事件的多个触发器。
有没有办法解决这个问题,这样我就可以定义多个触发器了?
发布于 2013-09-26 06:19:21
此错误意味着在AFTER INSERT表上已经有了一个meetings触发器。
如果它是您先前创建的相同的触发器(意为vipInvite),而现在您想要替换它,那么您需要首先删除它。
DROP TRIGGER vipInvite;
DELIMITER $$
CREATE TRIGGER vipInvite
...
END$$
DELIMITER ;现在,如果有其他触发器,则必须将两个触发器的代码合并到一个触发器中,然后删除现有触发器,然后创建一个新触发器。
要显示现有触发器的列表,请使用SHOW TRIGGERS。
SHOW TRIGGERS WHERE `table` = 'meetings';发布于 2013-12-22 06:16:29
如何在MySQL:中再现此错误
ERROR 1235 (42000): This version of MySQL doesn't yet support 'multiple
triggers with the same action time and event for one table'运行以下查询:
DELIMITER //
CREATE TRIGGER mytrigger1 AFTER INSERT ON mytable
FOR EACH ROW
BEGIN
END//
DELIMITER //
CREATE TRIGGER mytrigger2 AFTER INSERT ON mytable
FOR EACH ROW
BEGIN
END//如果要将多个操作挂钩到同一个事件/表,则必须将其全部插入一个触发器中。您可以调用许多这样的存储过程:
DELIMITER //
CREATE TRIGGER mytrigger1 AFTER INSERT ON mytable
FOR EACH ROW
BEGIN
CALL fromulate_the_moobars(NEW.myid);
CALL its_peanut_butter_jelly_time(NEW.myname);
END//https://stackoverflow.com/questions/19016297
复制相似问题