无法迭代插入后触发器期间插入的行-MySQL5.6

11dmarpk  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(176)

我希望你能就我一直在努力解决的一个问题提出一些明智的建议。我使用MySQL5.6触发器将插入期间的数据复制到一个单独的表(不是我要插入的表)。
我还在复制数据时修改数据,需要将insert中的行与上面的行进行比较。由于缺少对“for each statement”的支持,我无法在事务仍在进行时对整个insert数据集执行操作。似乎我只能作为支持的for each row语法的一部分来处理当前行。
有人知道克服这个问题的方法吗?
谢谢!
更新18/01/18:@solarflare谢谢你的回答,我研究了如何将操作拆分为一个insert,然后调用一个存储过程。这是可行的,但我不想走这条路,因为它打破了操作的原子性。我在postgresql上测试了相同的代码,效果很好。
似乎在执行大容量插入时,mysql中的after insert..for each row触发器会像大容量插入txn启动之前一样获取表的快照,并允许您查询快照,但无法查询插入的其他行(即使它们已插入)。
在postgresql中情况并非如此,当插入行时,触发器可以看到它们,即使事务没有完全提交。你见过这个/你知道这是mysql中的一个可配置参数还是一个设计选择?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题