今 天处理一个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;