0
假設我有這樣的代碼在交易中。每次失敗都需要回滾嗎?或者沒有提交退出腳本就足夠了?
$transactionfailed = false;
$mysqliconn->query("begin;");
//query 1
$result=$mysqliconn->query("insert into table(col1,col2) values('$val1','val2')");
if(!$result){$transactionfailed=true;}
//query 2
$result=$mysqliconn->query("insert into table2(col1,col2) values('$val1','val2')");
if(!$result){$transactionfailed=true;}
if($transactionfailed){$mysqliconn->query("rollback;");}
else{$mysqliconn->query("commit;");}
die();
我想取代它這一個
$mysqliconn->query("begin;");
//query 1
$result=$mysqliconn->query("insert into table(col1,col2) values('$val1','val2')");
if(!$result){die("error");}
//query 2
$result=$mysqliconn->query("insert into table2(col1,col2) values('$val1','val2')");
if(!$result){die("error");}
$mysqliconn->query("commit;");
die();
我想結束腳本,如果發生了什麼錯誤,而不回滾或承諾,取決於MySQL數據庫如果我沒有提交,則回滾事務。
我試了很多次,是的,如果我沒有提交退出,它會回滾事務。但是這一次是安全的嗎?。或者有我想念的東西。因爲我不希望那個查詢2失敗,查詢1在一天後提交。
它更好注意安全。如果不是這樣,後果在全球範圍內將非常可怕。 – apokryfos