Mysql事物

以前写的是 sql server,对mysql事物的写法不是很清楚,现整理了一个例子

delimiter //
/*
CALL sp_TranTest('0');
*/
DROP PROCEDURE IF EXISTS sp_TranTest;
CREATE PROCEDURE sp_TranTest(
inDD VARCHAR(20)
)
NOT DETERMINISTIC-- DETERMINISTIC:表示存储过程对同样的输入参数产生相同的结果;NOT DETERMINISTIC,则表示会产生不确定的结果(默认)
SQL SECURITY DEFINER
COMMENT'测试事物'
Begin

	declare _err int default 0;
	-- 是事先定义程序执行过程中可能遇到的问题。并且可以在处理程序中定义解决这些问题的办法。这种方式可以提前预测可能出现的问题,并提出解决方法。
	DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;

	start transaction	 ;

	INSERT INTO TranTestTable(DD)
	VALUES('00');

	if(inDD='0') THEN
		SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '错误';
	END IF;
	
	-- rollback;
	IF(_err=1) THEN
		rollback;
	ELSE
		commit;
	END IF;
END
//
delimiter ;

 

 

posted @ 2018-03-28 16:47  学无止境-dotnet码农  阅读(156)  评论(0编辑  收藏  举报