3

PHP.net上的 PDO 事务示例显示PDO::exec()已进行事务处理,但没有使用PDO::query().

交易是否涵盖PDO::query()

另外,据我了解,PDO::query()返回一个结果集。如果事务处理,怎么会有结果集,因为语句在提交之前不应该执行?(这是否意味着PDO::query()确实没有交易?)我似乎无法找到官方参考资料说明它是否存在。

4

1 回答 1

3

你误解了交易。事务只是保证操作是原子的:要么所有操作都成功,要么都不成功。一旦你开始一个事务,每个查询都将被执行,并将记录在事务日志中。如果操作失败并且您回滚,则每个操作都将被还原。

也就是说:查询是否可交易并不取决于您是否正在使用execquery而是取决于查询类型。INSERTUPDATE并且DELETE是可交易的,其他操作(例如ALTER TABLE)可能是可交易的,也可能不是可交易的,具体取决于您的 DBMS。

于 2012-07-08T12:57:42.337 回答