如何删除触发器中的记录

时间:2014-05-20 19:13:42

标签: mysql triggers

我的触发器看起来像这样:

CREATE TRIGGER addATicket AFTER INSERT ON ticket FOR EACH ROW BEGIN

declare numTicket int(2) default 0;
select count(*) into numTicket from ticket
    where (ticket.ticket_id != new.ticket_id) 
    and (ticket.seat_code = new.seat_code);

if (numTicket > 0) then
    delete from ticket where ticket_id= new.ticket_id;
end if;END

但是我的工作台发现错误:

  

错误代码:1442。无法更新表格'在存储的函数/触发器中,因为它已被调用此存储函数/触发器的语句使用。

我该如何解决这个问题。请给我一个帮助。

1 个答案:

答案 0 :(得分:0)

这很可能是因为你的主INSERT查询正在触发TRIGGER对该表进行行级别锁定,因此你的触发器也在抱怨它。

很可能您想要将触发器定义从AFTER INSERT ON ticket更改为BEFORE INSERT ON ticket(我的意思是使用BEFORE TRIGGER代替。)

在这里看到几乎相似的帖子

MySql Error: Can't update table in stored function/trigger because it is already used by statement which invoked this stored function/trigger