Mysql事务问题

标签 mysql transactions pdo

在直接的 mysql 脚本中,我会做这样的交易:

START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;

我对事务在 PDO 中的工作方式有点困惑。看起来有 beginTransaction() 和 commit() 方法——所以我不确定这些是否只是 staright SQL 的便利包装器?还是他们在幕后做了更多工作?

换句话说,下面这些例子本质上是一样的吗?

示例 1:

$dbh->exec( 'START TRANSACTION' );
//...do some db work here...
$dbh->exec( "COMMIT" );

示例 2:

$dbh->beginTransaction();
//...do some db work here...
$dbh->commit();

最佳答案

功能方面两者相同,但 beginTransaction() 和 commit() 是 PDO 函数,可确保与所有数据库兼容,并且可能有一些数据库可能会在 START TRANSACTION 时出错,但 PDO 方法将始终有效。

关于Mysql事务问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10891625/

相关文章:

MySQL - 如果在事务期间插入失败,是否总是会引发异常或警告?

javascript - ajax请求成功但看不到我的数据

php - 使用一个查询插入多个数组

PHP PDO SQLITE - 连接

php - PDO 事务函数与 MySQL 事务语句?

java - Spring MVC - 如何使用 JSP 表更新数据库中的行?

php - 按时移获取数据 - PHP MYSQL

java - 是否可以将整个@Transactional 类的一个方法标记为非事务性

sql - 禁止存储过程中的事务

javascript - Node.js + MySQL - 处理事务