MySql 事务+异常处理+异常抛出
生活随笔
收集整理的這篇文章主要介紹了
MySql 事务+异常处理+异常抛出
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
-- 測(cè)試用表
-- innodb 支持事務(wù)
CREATE TABLE `tb_test` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(50) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=92 DEFAULT CHARSET=utf8;
?
-- 測(cè)試用儲(chǔ)存過程 -- 通過插入相同的主鍵和插入NULL到非空字段中制造異常 CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_test`() BEGIN-- 如果出現(xiàn)執(zhí)行異常則結(jié)束后繼的執(zhí)行,并執(zhí)行begin-end中的處理DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN-- 回滾事務(wù)ROLLBACK;-- 獲取錯(cuò)誤信息GET DIAGNOSTICS CONDITION 1 @p1=RETURNED_SQLSTATE,@p2= MESSAGE_TEXT; -- 借“模擬”拋出異常RESIGNAL SET schema_name = 'mtt_dev', table_name = 'tb_test', message_text = @p2, mysql_errno = @p1;END;START TRANSACTION;INSERT INTO `tb_test`(`name`)VALUES ('name');INSERT INTO `tb_test`(`name`)VALUES (NULL);INSERT INTO `tb_test`(`id`,`name`)VALUES (1,'name2');INSERT INTO `tb_test`(`id`,`name`)VALUES (1,'name3'); COMMIT; END$$DELIMITER ;?
-- 執(zhí)行 CALL sp_test();?
轉(zhuǎn)載于:https://www.cnblogs.com/xachary/p/4751263.html
總結(jié)
以上是生活随笔為你收集整理的MySql 事务+异常处理+异常抛出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【effective c++读书笔记】【
- 下一篇: 机器学习中的相似性度量 (转)