如何解决查询中的错误(1442)MySql

时间:2016-01-23 10:12:06

标签: mysql triggers

我正在尝试将一些记录插入到表中并在另一个表中更新其自动启动ID;

我有一个触发器

delimiter #

create trigger test AFTER INSERT ON samples_track for each row begin
update sample_details set sampletrack_id = new.sampletrack_id where sample_details.sample_id = new.sample_id; end#

delimiter ;

我正在运行查询

    INSERT INTO samples_track(sample_name,customer_id,contact_name,added_by,added_date,status,sample_id)
SELECT sample_name,
       customer_id,
       clinician_id,
       999,
       '2016-01-23',
       1,
       sample_id
FROM sample_details
WHERE sampletrack_id IS NULL;

结果如下

  

查询错误(1442):无法更新已存储的表'sample_details'   函数/触发器,因为它已被调用的语句使用   这个存储的函数/触发器。

1 个答案:

答案 0 :(得分:0)

好吧,这个错误的原因是当你插入一条记录时mysql会锁定表。你不能插入/更新/删除你插入的同一个表的行...因为然后触发器会一次又一次地调用..最后是一个递归。

要解决您的问题,请查看this thread。此外,在this forum中他们建议使用before insert触发器...值得一试。

相关问题