我有 InnoDB 存储引擎的表。我想在一切正确时开始插入过程。我怎样才能做到这一点 ?
问问题
405 次
2 回答
2
您可以使用支持事务的MySQLi类 轻松做到这一点。
这是一个例子:
<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->autocommit(false);
$mysqli->query("INSERT INTO test(id) VALUES (1)");
$mysqli->rollback();
$mysqli->query("INSERT INTO test(id) VALUES (2)");
$mysqli->commit();
?>
此外,如果您使用的是框架,请查看它的文档。通常有一个非常酷的交易实现和方法。
下面是 CodeIgniter 中非常智能的事务算法的示例:
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete();
如果其中一个查询出现错误,CodeIgniter 会自动处理事务,并且角色会返回更改。 CodeIgniter 的事务处理方法
于 2012-05-19T06:50:01.703 回答
2
无论您使用哪个 PHP 库,您始终可以使用以下任一语句启动事务:
SET autocommit = off
BEGIN
START TRANSACTION
一旦开始,你可以做很多工作,当你准备好永久保存它时,做一个提交:
COMMIT
或者,当您想要撤消正在进行的工作(直到上一个提交时刻)时,发出回滚:
ROLLBACK
您可以使用任何用于 mysql 的 php 库将这些作为普通 SQL 语句简单地运行。
于 2012-05-19T07:14:02.810 回答