PHP.net处的PDO事务示例显示已事务处理PDO :: exec(),但没有使用PDO :: query()的此类示例.
交易是否涵盖PDO :: query()?
另外,据我了解,PDO :: query()返回结果集.如果进行了事务处理,由于该语句只有在提交后才执行,因此如何才能有结果集? (这是否意味着PDO :: query()确实未进行事务处理?)我似乎找不到正式的引用来说明是否存在.
解决方法:
您会误会交易.事务只是保证了操作是原子的:要么所有操作成功要么都不成功.一旦开始事务,将执行每个查询,并将其记录在事务日志中.如果某个操作失败而您回滚,则将还原所有操作.
就是说:查询是否可事务并不取决于您使用的是exec还是查询,而是取决于查询类型. INSERT,UPDATE和DELETE是可事务的,其他操作(例如ALTER TABLE)可能是也可能不是事务,这取决于您的DBMS.