【问题标题】:How to solve Error in query (1442) MySql如何解决查询中的错误(1442)MySql
【发布时间】:2016-04-29 23:10:44
【问题描述】:

我正在尝试向一个表中插入一些记录并在另一个表中更新其自动记录 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' 函数/触发器,因为它已被调用的语句使用 这个存储的函数/触发器。

【问题讨论】:

    标签: mysql triggers


    【解决方案1】:

    嗯,这个错误的原因是当你插入一条记录时mysql锁定了表。你不能插入/更新/删除你插入的同一个表的行..因为那样触发器会一次又一次地调用..以递归结束。

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

    【讨论】:

    • 这是mysql的一个缺点。我也遇到了同样的问题
    猜你喜欢
    • 2016-02-09
    • 1970-01-01
    • 2013-01-23
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多