1. 程式人生 > 實用技巧 >mysql中set autocommit=0與start transaction區別

mysql中set autocommit=0與start transaction區別

set autocommit=0,
當前session禁用自動提交事物,自此句執行以後,每個SQL語句或者語句塊所在的事務都需要顯示"commit"才能提交事務。
set autocommit=1,
執行update,inster,select等等時立即執行

start transaction

指的是啟動一個新事務。

 在預設的情況下,MySQL從自動提交(autocommit)模式執行,這種模式會在每條語句執行完畢後把它作出的修改立刻提交給資料庫並使之永久化。事實上,這相當於把每一條語句都隱含地當做一個事務來執行。如果你想明確地執行事務,需要禁用自動提交模式並告訴MySQL你想讓它在何時提交或回滾有關的修改。

執行事務的常用辦法是發出一條START TRANSACTION(或BEGIN)語句掛起自動提交模式,然後執行構成本次事務的各條語句,最後用一條 COMMIT語句結束事務並把它們作出的修改永久性地記入資料庫。萬一在事務過程中發生錯誤,用一條ROLLBACK語句撤銷事務並把資料庫恢復到事務開 始之前的狀態。

   START TRANSACTION語句"掛起"自動提交模式的含義是:在事務被提交或回滾之後,該模式將恢復到開始本次事務的 START TRANSACTION語句被執行之前的狀態。(如果自動提交模式原來是啟用的,結束事務將讓你回到自動提交模式;如果它原來是禁用的,結束 當前事務將開始下一個事務。)

如果是autocommit模式 ,autocommit的值應該為 1 ,不autocommit 的值是 0 ;請在試驗前 確定autocommit 的模式是否開啟