【发布时间】:2018-01-08 02:10:00
【问题描述】:
我有一个带有 DBI 的 perl 脚本,它按顺序对 MySQL 数据库中的多个表执行各种 DML 操作。
我在我的 perl 脚本中使用 dbh->begin_work 和 eval 实现了事务。现在,我运行我的脚本一次,一段时间后我再次运行它,从而向我的数据库启动两个事务。当我第二次运行脚本时,第一个事务已经完成了对第五张表的操作,但我的第二个事务甚至在第一个表上也等待执行操作。
我是否可以让脚本并行执行,以便第二个事务能够在第一个事务在它之前运行时对第一个表执行操作?
【问题讨论】:
-
不是事务方式...您的第二个事务不应该读取尚未提交的数据。如果你的隔离级别是read uncommitted,你可能会做一些事情。我不会。
-
“我在我的 perl 脚本中使用
dbh->begin_work和eval实现了事务” 禁用RaiseError并检查每个操作的返回状态要干净得多。
标签: mysql perl transactions dbi