《Mysql必读mysql存储过程中使用事务实例》要点: 本文介绍了Mysql必读mysql存储过程中使用事务实例,希望对您有用。如果有疑问,可以联系我们。
导读:例子,mysql存储过程中使用事务.
create definer=`root`@`localhost` procedure `createbusiness`(parameter1 int)begin #routine bo...
例子,mysql存储过程中使用事务. ?MYSQL入门
create definer=`root`@`localhost` procedure `createbusiness`(parameter1 int) begin ??? #routine body goes here... ??? declare flag int default parameter1;#声明变量flag,将参数值赋给该变量 ??? declare uuidstr varchar(32);#声明一个长度为32位的字符串 ??? declare currenttime timestamp;#声明一个类型为时间戳的变量 ??? declare err int default 0;#声明一个整形变量err,默认值是0 ??? declare continue handler for sqlexception set err=1;#当sqlexception handler捕捉到异常时,设置err=1MYSQL入门
??? start transaction;#开始事务 ??? while flag>0 do #注意: while不能空实现(在while块中,里面必须有语句) ??????? #uuid()函数得到的字符串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除里面的-,得到一个32位的字符串 ??????? set uuidstr = replace(uuid(),'-','') ; ??????? #得到当前的时间 ??????? set currenttime = current_timestamp(); ??????? #执行插入语句,注意连接字符串的函数concat(str1,str2,...);其中str..也可以是数字类型 ??????? insert into ????????? 表名称 ?????????? (id,title,keyword,hasimage,istodayhead,isshowinhome,isbigness,publishtime,originid,modify_time,isanalysis) ???????? value ???????? (uuidstr,concat('事件标题',flag),concat('关键字',1,currenttime,concat('xxxxxxx',1); ??????? #每循环一次,flag要减去1,注意没有flag--的语法 ??????? set flag = flag-1; ??????? #在这里测试当err=1时,事务是否有了回滚,测试ok ??????? #if flag=7 then?? #注意在procedure中给变量赋值要用到set,或在变量声明时用default来父子,所以=号可以用来比较两边的值是否相等,<=>也可,区别先不去纠结. ??????????????? #set err=1; ??????? #end if; ??? end while;MYSQL入门
??? if (err=0) then ??????? commit; ??????? select 'ok'; ???? else ??????? rollback; ??????? select 'err'; ???? end if; end;MYSQL入门 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|