为了好玩,我用PDO替换了我应用程序中的mysqli扩展。PDO,mysql,交易和表锁定
有一段时间我需要使用交易+表锁定。
在这些情况下,根据mysql手册,语法需要有点不同。而不是调用START TRANSACTION的,你这样做是这样的...
SET autocommit=0;
LOCK TABLES t1 WRITE, t2 READ, ...;
... do something with tables t1 and t2 here ...
COMMIT;
UNLOCK TABLES;
(http://dev.mysql.com/doc/refman/5.0/en/lock-tables-and-transactions.html)
我的问题是,这种系统与PDO ::调用BeginTransaction互动?在这种情况下,我可以使用PDO :: beginTransaction吗?或者我应该手动发送sql“SET autocommit = 0; ... etc”。
谢谢你的建议,
“开始一个事务是不同于关闭自动提交”不与PDO它不是“T。当你调用[PDO :: beginTransaction()](http://php.net/manual/en/pdo.begintransaction.php)时,它会关闭自动提交。 – Olhovsky 2012-11-19 13:34:17
好点,我相应地更新了我的答案。我急切地等待MySQL获得理智的DDL并锁定交易中的行为......呃,也许不是。前一阵子转向Postgres。 – Charles 2012-11-19 16:29:52
你能检查这个线程吗? https://stackoverflow.com/questions/47810114/php-pdo-mysql-and-how-does-it-really-deal-with-mysql-transactions我仍然不明白使用'PDO :: beginTransaction ()'带和不带'$ this-> pdo-> setAttribute(PDO :: ATTR_AUTOCOMMIT,0);'。能否请你帮忙?非常感谢你! – tonix 2017-12-14 10:06:57