mysql的事務(wù)是怎么實現(xiàn)的 如何在mysql下實現(xiàn)事務(wù)的提交與回滾?
如何在mysql下實現(xiàn)事務(wù)的提交與回滾?一個事務(wù)中有幾個操作必須一起完成,或者一個都不能完成。如果一個操作因故無法完成,則必須回滾以前完成的操作delay$$begin declare tuError
如何在mysql下實現(xiàn)事務(wù)的提交與回滾?
一個事務(wù)中有幾個操作必須一起完成,或者一個都不能完成。如果一個操作因故無法完成,則必須回滾以前完成的操作
delay$$begin declare tuError INTEGER DEFAULT 0 declare CONTINUE HANDLER for SQLEXCEPTION SET tuError=1 START TRANSACTION UPDATE table1 SET a=“111”INSERT INTO table2(b)value(“222”)INSERT INTO table3(c)值(“333”)如果tuError=1,則回滾ELSE COMMIT END IF END$$DELIMITER
存儲過程是:
通過一系列SQL語句,根據(jù)傳入?yún)?shù)(或不傳入?yún)?shù)),通過簡單調(diào)用,
完成比單個SQL語句更復(fù)雜的函數(shù),存儲在數(shù)據(jù)庫服務(wù)器上,只需要編譯一次再使用,不需要編譯。它主要控制存儲過程。
事務(wù)是一系列數(shù)據(jù)更改操作。一旦事務(wù)中包含的操作失敗或用戶中止,用戶可以控制撤消事務(wù)體中的所有操作,并返回到事務(wù)開始前的狀態(tài)。
事務(wù)中的操作是一個整體,要么作為一個整體完成,要么根本沒有完成。以確保數(shù)據(jù)的完整性。
在mysql中,MyISAM存儲引擎不支持事務(wù),而InnoDB支持事務(wù)。
兩者都是數(shù)據(jù)庫中非常重要的知識。
mysql事務(wù)回滾怎樣實現(xiàn)?
英寸mysql.ini文件(在窗口中)或mysql.cof文件(在Linux中)將默認(rèn)的存儲引擎選項修改為MyISAM
查看MySQL客戶端的事務(wù)提交模式:選擇@@autocommit
將MySQL客戶端的事務(wù)提交模式修改為手動提交:設(shè)置@@autocommit=0
(注:0表示手動提交,即,使用mysql客戶端執(zhí)行SQL命令后,必須使用commit命令執(zhí)行事務(wù),否則執(zhí)行的SQL命令無效。如果要取消事務(wù),請使用rollback命令。1表示自動提交,即不需要在MySQL客戶端手動執(zhí)行commit命令。)
在MySQL的自動提交模式下,每條SQL語句都是一個獨立的事務(wù)。
注意:
1。手動設(shè)置@@autocommit=0,即設(shè)置為非自動提交模式,該模式僅對當(dāng)前MySQL命令行窗口有效。打開新窗口后,默認(rèn)值仍然是auto commit;
2。對于非自動提交模式,例如在命令行中添加記錄,并在退出命令行后重新打開命令行,以前插入的記錄不可用。(只需使用select*from表名進(jìn)行驗證。)