MySQL错误代码1235

use*_*052 17 mysql triggers mysql-error-1235

在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 ;  
Run Code Online (Sandbox Code Playgroud)

产生此错误:

此版本的MySQL尚不支持具有一个表的相同操作时间和事件的多个触发器.

有没有办法解决这个问题,所以我可以定义多个触发器?

pet*_*erm 27

此错误表示您已AFTER INSERTmeetings表上触发.

如果它是vipInvite您之前创建的相同触发器(含义),现在您想要替换它,那么您需要先将其删除

DROP TRIGGER vipInvite;
DELIMITER $$  
CREATE TRIGGER vipInvite
...
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

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

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

SHOW TRIGGERS WHERE `table` = 'meetings';
Run Code Online (Sandbox Code Playgroud)

  • @ user2817052好极了!如果您觉得答案有用,请考虑**[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)**它. (4认同)