日期:2014-05-16  浏览次数:21167 次

触发器问题 (过节也不能休息,大家帮帮我)
假设有A,B,C 三个表

A表有个触发器 aa 用来将新插入的数据处理后放入B表
B表中也有个触发器 bb 用来将新插入的数据处理后放入C表 并删除A表中触发器以处理的记录
数据的流向 A->B->C 都是通过触发器完成的

删除A表中的记录的语句 无论放在 aa 或则 bb 都会报错

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

很难理解 bb根本没有去更新或插入记录到A 为什么还会冲突

------解决方案--------------------
因为你的 A 触发了 B (A表有个触发器 aa 用来将新插入的数据处理后放入B表)
,B又触发了 C,(B表中也有个触发器 bb 用来将新插入的数据处理后放入C表)
然后C 又去操作A。(并删除A表中)
形成的循环。
------解决方案--------------------
最终效果是再A中插入数据,然后删除A的数据,
mysql只判断你在处理A的数据,然后又触发回来处理A的数据,如此就是循环
------解决方案--------------------
探讨
因为你的 A 触发了 B (A表有个触发器 aa 用来将新插入的数据处理后放入B表)
,B又触发了 C,(B表中也有个触发器 bb 用来将新插入的数据处理后放入C表)
然后C 又去操作A。(并删除A表中)
形成的循环。

------解决方案--------------------
探讨
引用:
因为你的 A 触发了 B (A表有个触发器 aa 用来将新插入的数据处理后放入B表)
,B又触发了 C,(B表中也有个触发器 bb 用来将新插入的数据处理后放入C表)
然后C 又去操作A。(并删除A表中)
形成的循环。



就是因为循环..