mysql序列引发的锁问题

在处理MySQL序列时,遇到并发问题导致两个事务获取到相同的序列值。通过创建表`tb_sequence`和序列函数展示问题复现过程,描述了在并发环境下,即使使用行级锁也可能出现并发冲突。寻求关于第一种写法为何仍出现并发问题的解答。
摘要由CSDN通过智能技术生成

  今 天处理一个mysql序列,结果发现两个事物同时开启会出现并发的情况,查出的序列是相同的。

以下为还原步骤:

1 创建表:

CREATE TABLE `tb_sequence` (
  `name` varchar(50) NOT NULL,
  `current_value` bigint(30) NOT NULL COMMENT '序列当前值',
  `increment` int(11) NOT NULL DEFAULT '1',
  `curr_date` date DEFAULT NULL COMMENT '当前日期',
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2 创建序列函数:

BEGIN
    declare `seq` int(11);
    declare `cnt` int(2);
    select count(1) into `cnt` from `tb_sequence` where `name`=typeName;
    if `cnt` = 0 then
        insert into `tb_sequence`(name,current_value,increment,curr_date) values(typeName,'0','1',SYSDATE());
    end if;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值