我的代码很长,所以我要简单一点。 我有以下内容:
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,因为它已被调用此语句的语句使用....
对此有任何解决方案或解决方法......
答案 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中的相应记录。
触发器很棒,但不要生他们。