《Mysql应用在Mysql存储过程中使用事务实例》要点: 本文介绍了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=1
??? START TRANSACTION;#开始事务MYSQL教程
??? WHILE flag>0 DO #注意: while不能空实现(在while块中,里面必须有语句)MYSQL教程
??????? #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;MYSQL教程
??????? #在这里测试当err=1时,事务是否有了回滚,测试ok ??????? #IF flag=7 THEN?? #注意在procedure中给变量赋值要用到set,或在变量声明时用default来父子,所以=号可以用来比较两边的值是否相等,<=>也可,区别先不去纠结. ??????????????? #set err=1; ??????? #END if; ??? END WHILE;
??? IF (err=0) THEN ??????? commit; ??????? select 'OK'; ???? ELSE ??????? rollback; ??????? select 'err'; ???? END IF;MYSQL教程
END; MYSQL教程 欢迎参与《Mysql应用在Mysql存储过程中使用事务实例》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|