首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL错误代码1235

问MySQL错误代码1235
EN

Stack Overflow用户
提问于 2013-09-25 22:32:55
回答 2查看 48.9K关注 0票数 17

在MySQL中,我试图定义如下触发器:

代码语言:javascript
复制
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还不支持一个表具有相同操作时间和事件的多个触发器。

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

EN

回答 2

Stack Overflow用户

发布于 2013-09-26 06:19:21

此错误意味着在AFTER INSERT表上已经有了一个meetings触发器。

如果它是您先前创建的相同的触发器(意为vipInvite),而现在您想要替换它,那么您需要首先删除它。

代码语言:javascript
复制
DROP TRIGGER vipInvite;
DELIMITER $$  
CREATE TRIGGER vipInvite
...
END$$
DELIMITER ;

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

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

代码语言:javascript
复制
SHOW TRIGGERS WHERE `table` = 'meetings';
票数 31
EN

Stack Overflow用户

发布于 2013-12-22 06:16:29

如何在MySQL:中再现此错误

代码语言:javascript
复制
ERROR 1235 (42000): This version of MySQL doesn't yet support 'multiple 
triggers with the same action time and event for one table'

运行以下查询:

代码语言:javascript
复制
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//

如果要将多个操作挂钩到同一个事件/表,则必须将其全部插入一个触发器中。您可以调用许多这样的存储过程:

代码语言:javascript
复制
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//
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19016297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档