学无先后,达者为师

网站首页 mysql 正文

mysql的存储过程语句添加事务管理没有生效

作者:小徐敲java 更新时间: 2024-04-05 mysql

如下写法存储过程的事务是没有生效的,因为START TRANSACTION;不可以写在DDL语句之前

CREATE DEFINER=`root`@`localhost` PROCEDURE `myProcedure`()
BEGIN
START TRANSACTION;
CREATE TABLE IF NOT EXISTS `aa`(
  `a` int(255) NOT NULL AUTO_INCREMENT,
  `b` varchar(255) DEFAULT NULL,
  `c` varchar(255) DEFAULT NULL,
  `ak` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`a`) USING BTREE,
  KEY `ak` (`ak`) USING BTREE COMMENT '外键'
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- 睡眠10秒
DELETE FROM aa WHERE a=2;
SELECT SLEEP(10)
COMMIT;
END

如下写法存储过程的事务是生效的

CREATE DEFINER=`root`@`localhost` PROCEDURE `myProcedure`()
BEGIN
CREATE TABLE IF NOT EXISTS `aa`(
  `a` int(255) NOT NULL AUTO_INCREMENT,
  `b` varchar(255) DEFAULT NULL,
  `c` varchar(255) DEFAULT NULL,
  `ak` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`a`) USING BTREE,
  KEY `ak` (`ak`) USING BTREE COMMENT '外键'
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
START TRANSACTION;
DELETE FROM aa WHERE a=2;
-- 睡眠10秒
SELECT SLEEP(10)
COMMIT;
END

原文链接:https://blog.csdn.net/qq_19891197/article/details/132397983

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新