MySQL错误代码1235

问题描述:

在MySQL中,我试图定义这样的触发器:

In MySQL I tried to define a trigger like this:

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尚不支持一个表具有相同动作时间和事件的多个触发器.

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

是否有解决此问题的方法,以便我可以定义多个触发器?

Is there a way to work around this so I can define multiple triggers?

此错误表示您在meetings表上已经具有AFTER INSERT触发器.

This error means you already have an AFTER INSERT trigger on meetings table.

如果它与您先前创建的触发器(含义为vipInvite)相同,现在又要替换它,则需要先将其删除

If it is the same trigger (meaning vipInvite) that you created earlier and now you want to replace it then you need to drop it first

DROP TRIGGER vipInvite;
DELIMITER $$  
CREATE TRIGGER vipInvite
...
END$$
DELIMITER ;

现在,如果您还有其他触发器,则必须将两个触发器中的代码合并为一个,然后删除现有触发器,然后创建一个新触发器.

Now if you have some other trigger you have to merge code from both triggers into one, then drop existing trigger, and then create a new one.

要显示现有触发器的列表,请使用 SHOW TRIGGERS .

To show the list of existing triggers use SHOW TRIGGERS.

SHOW TRIGGERS WHERE `table` = 'meetings';