有什么解决方案MYSQL错误代码:1442?

时间:2012-01-15 17:27:37

标签: mysql sql

我的代码很长,所以我要简单一点。 我有以下内容:

table1 --> have a trigger on insert (call function1 to insert into table2)
table2 --> have a trigger on insert (call function2)

function2()
update table1 depending on a query that table1 is related to.

并且我得到错误无法更新存储函数/触发器中的表table1,因为它已被调用此语句的语句使用....

对此有任何解决方案或解决方法......

1 个答案:

答案 0 :(得分:1)

了解触发器的一点是它们是交易的一部分。

因此,插入表1,触发更新table1的插入表2,可能导致原始插入突然变为自身。使用MySQl没有完成触发器,理论上这可能没问题,如果它正在考虑更新最初插入的记录,但实际上还没有提交....

尝试并避免这种情况是通常最好的建议,但是如果你不能,中间表可能会工作(插入到它并让它触发对表1和2的更改),或者更好的是,而不是使用直接插入,使用存储过程并让它更新表1& 2 cummulativley。

e.g。而是插入Table1 = A,导致Table2 = B导致Table1(A)变为C. 和SP查找B将对A做什么并将其插入A(c)和B中的相应记录。

触发器很棒,但不要生他们。