在mysql數據庫中過程處置一個操作時呈現錯誤,不克不及完當作這個使命時,怎么解決數據庫的數據回到以前狀況呢?下面分享一個mysql事務的回滾操作。我寫的經驗對你進修mysql有幫忙的話,給我投票、點贊或者保藏!
1數據庫存儲過程的動態語句
1數據庫怎么備份和恢復數據
1數據庫對數據的加密于解密
登錄mysql,在test數據庫中新建一個表,輸入數據:
Create Table
CREATE TABLE `shoufei` ( `id` int(11) NOT NULL AUTO_INCREMENT, `shijian` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `xiangmu` varchar(20) NOT NULL, `jiage` float NOT NULL, `shuliang` int(11) NOT NULL, `jine` float DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
 在test數據庫中成立一個“shiwu”的過程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `shiwu`()
BEGIN
END$$
 在過程中界說sql語句的異常處置,若是發生異常就回滾到以前數據,而且退出當前語句塊(begin end)。
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
 過程起頭事務:START TRANSACTION;
 在事務中把id=2的記實點竄為id=1,本家兒鍵獨一性會發生錯誤,直接退出begin-end.
UPDATE shoufei SET id=1 WHERE id=2;
 接下來提交事務,若是提交當作功換回一個成果集'提交當作功!',:
COMMIT;
SELECT '提交當作功!';
執行過程:call shiwu();
點竄數據時有錯誤,sql異常執行回滾ROLLBACK。
 
 把點竄數據改為:
UPDATE shoufei SET id=6 WHERE id=2;
 再執行過程,事務當作功執行,把id改為6.
 
 0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!