mysql 实现id自增序列_mysql创建自增序列

本文介绍了在MySQL中如何实现ID自增序列,通过创建特定的存储过程和函数来模拟Oracle中的Sequence功能,详细步骤包括建表以及测试SQL的演示。
摘要由CSDN通过智能技术生成

oracle中可以直接用Create Sequence创建序列。mysql只能自己手动创建了,过程如下:

  • 建表
CREATE TABLE `sequence` (  `name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '序列的名字',  `current_value` int(11) NOT NULL COMMENT '序列的当前值',  `increment` int(11) NOT NULL DEFAULT '1' COMMENT '序列的自增值',  PRIMARY KEY (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  • 创建初始化序列,读取当前值,读取下一个值并回写三个函数:
CREATE DEFINER=`root`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)    DETERMINISTICBEGIN        DECLARE value INTEGER;      SET value = 0;      SELECT current_value INTO value           FROM sequence           WHERE name = seq_name;      RETURN value; END
CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)    DETERMINISTICBEGIN      UPDATE sequence           SET current_value = current_value + increment           WHERE name = seq_name;      RETURN currval(seq_name); END
CREATE DEFINER=`root`@`%` FUNCTION `setval`(seq_name VARCHAR(50), value INTEGER) RETURNS int(11)    DETERMINISTICBEGIN      UPDATE sequence           SET current_value = value           WHERE name = seq_name;      RETURN currval(seq_name); END

这样就ok了,测试sql如下:

d378edfa4a46a578943c8090fc8bea36.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值