[英]Transactions with MySQL?
我有帶InnoDB存儲引擎的表。 我要在一切正確的情況下開始插入過程。 我怎樣才能做到這一點 ?
您可以使用支持事務的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的交易方式
無論您使用哪個PHP庫,都可以始終使用以下任一語句來啟動事務:
SET autocommit = off
BEGIN
START TRANSACTION
一旦開始,您可以做很多工作,當您准備永久保存它時,請執行以下提交:
COMMIT
或者,當您要撤消進行中的工作(直到上一個提交時刻)時,請執行回滾:
ROLLBACK
您可以使用任何適用於mysql的php庫,將它們簡單地作為普通SQL語句運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.