MySQL事務是指一組操作作為一個整體來執行,要么全部成功,要么全部失敗。如果出現了某個操作失敗的情況,需要回滾(ROLLBACK)到操作前的狀態。因此,事務是數據庫保證數據一致性的機制之一。
事務的原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability),簡稱ACID。其中,隔離性的實現可以通過鎖機制實現,而原子性和一致性往往需要回滾機制。
-- 創建測試表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 開始事務 START TRANSACTION; -- 插入數據 INSERT INTO `test` (`name`) VALUES ('張三'); INSERT INTO `test` (`name`) VALUES ('李四'); INSERT INTO `test` (`name`) VALUES ('王五'); -- 回滾事務 ROLLBACK; -- 查詢數據 SELECT * FROM `test`; -- 刪除測試表 DROP TABLE `test`;
上述代碼中,首先通過CREATE TABLE創建了一個測試表,然后使用START TRANSACTION開啟一個事務,分別向表中插入了三條數據,并在最后使用ROLLBACK回滾了整個事務。最后,使用SELECT語句查詢數據,可以看到表中仍然沒有任何記錄,證明回滾操作生效。
除了ROLLBACK之外,還可以使用COMMIT提交事務。兩者的區別在于,ROLLBACK是撤銷事務,COMMIT是確認事務執行。因此,根據不同的需求,可以選擇使用相應的操作來保證數據的一致性。
上一篇mysql事例