交易將多個 SQL 操作視為單一工作單元,要麼全成功(COMMIT),要麼全失敗回滾(ROLLBACK),確保資料一致性。
START TRANSACTION; SAVEPOINT savepoint_name; -- 執行 SQL 操作 -- 正常:COMMIT; 異常:ROLLBACK TO savepoint_name;
<?php
$handler = mysql_connect("localhost","root","password");
mysql_select_db("task");
mysql_query("SET AUTOCOMMIT=0"); -- 關閉自動提交
mysql_query("BEGIN"); -- 開始交易
if (!mysql_query("INSERT INTO trans (id) VALUES('2')")) {
mysql_query("ROLLBACK");
}
if (!mysql_query("INSERT INTO trans (id) VALUES('4')")) {
mysql_query("ROLLBACK");
}
mysql_query("COMMIT");
mysql_close($handler);
?>