mysql怎么返回事务的错误信息
1、登录mysql,在test数据库中新建一个表:CREATETABLE`shoufei`(螬绣囤扮`id`i荏鱿胫协nt(11)NOTNULLAUTO_INCREMENT,`shijian`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,`xiangmu`varchar(20)NOTNULL,`jiage`floatNOTNULL,`shuliang`int(11)NOTNULL,`jine`floatDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=7DEFAULTCHARSET=utf8
2、在test数据库中新建一个过程shiwu。DELIMITER $$CREATE PROCEDURE `test`.`shiwu`() BEGIN END$$DELIMITER ;
3、在过程中增加插入语句,给表shoufei加两个数据,数据主键相同会出现错误。INS苇质缵爨ERT INTO shoufei VALUES(6,CUR伊怕锱鳏RENT_TIMESTAMP,'感冒药',10,3,30); INSERT INTO shoufei VALUES(6,CURRENT_TIMESTAMP,'云南白药',20,10,200);
4、在过程中定义事务的异常:DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; 回滚 GET DIAGNOSTICS C晦倘佳鳎ONDITION 1 @p1=RETURNED_SQLSTATE,@p2= MESSAGE_TEXT; IF @p1='BF000' THEN用户的自定义的信息 SIGNAL SQLSTATE 'BF000' SET MESSAGE_TEXT = @p2; ELSE SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = @p2; END IF; END;
5、START TRANSACTION;开始事务,定义在插入语句之前。
6、在过程最后提交更新:commit;
7、执行过程,还回错误信息。SET autocommit=0; 把自动提交关闭CALL shiwu();
8、把错误信息修改为中文:SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '输入数据更新错误!';
9、重新执行过程,错误信息变成自定义的文字。