mysql 实现 序列

创建序列表:

CREATE TABLE SEQUENCE ( NAME VARCHAR(50) NOT NULL, CURRENT_VALUE BIGINT NOT NULL, STEP INT NOT NULL DEFAULT 1, PRIMARY KEY (NAME) ) ENGINE=INNODB;

插入序列测试

insert into SEQUENCE values(‘SEQ_TEST‘,1,1);

添加获取序列当前值函数:

DROP FUNCTION IF EXISTS currval;
DELIMITER $
CREATE FUNCTION currval (seq_name VARCHAR(30))
RETURNS INTEGER
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ‘‘
BEGIN
DECLARE VALUE INTEGER;
SET VALUE = 0;
SELECT CURRENT_VALUE INTO VALUE
FROM SEQUENCE
WHERE NAME = seq_name;
RETURN VALUE;
END
$
DELIMITER ;

添加获取序列下一个值函数:

DROP FUNCTION IF EXISTS nextval;
DELIMITER $
CREATE FUNCTION nextval (seq_name VARCHAR(50))
RETURNS INTEGER
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ‘‘
BEGIN
UPDATE SEQUENCE
SET CURRENT_VALUE = CURRENT_VALUE + STEP
WHERE NAME = seq_name;
RETURN currval(seq_name);
END
$
DELIMITER ;

测试:

SELECT currval(‘SEQ_TEST‘);
SELECT nextval(‘SEQ_TEST‘);

原文地址:https://www.cnblogs.com/gongsd/p/12330554.html

时间: 2024-11-02 18:13:05

mysql 实现 序列的相关文章

MySQL实现序列(Sequence)效果

MySQL实现序列效果 一般使用序列(Sequence)来处理主键字段,在MySQL中是没有序列的,但是MySQL有提供了自增长(increment)来实现类似的目的,但也只是自增,而不能设置步长.开始索引.是否循环等,最重要的是一张表只能由一个字段使用自增,但有的时候我们需要两个或两个以上的字段实现自增(单表多字段自增),MySQL本身是实现不了的,但我们可以用创建一个序列表,使用函数来获取序列的值. 1. 新建序列表 drop table if exists sequence;   crea

MySQL实现序列(Sequence)效果以及在Mybatis中如何使用这种策略

前言: 在oracle中一般使用序列(Sequence)来处理主键字段,在MySQL中是没有序列的,但是MySQL有提供了自增长(increment)来实现类似的目的,但也只是自增,而不能设置步长.开始索引.是否循环等.最重要的是一张表只能设置一个字段使用自增,但有的时候我们需要两个或两个以上的字段实现自增(单表多字段自增),MySQL本身是实现不了的,但我们可以用创建一个序列表,使用函数来获取序列的值 一 MySQL中序列的实现 (1)新建一个测试表: DROP TABLE IF EXISTS

3、怎么创建MySQL的序列?

创建MySQL的序列?mysql是没有序列的,我最近刚做完一个项目也是从oralce移植到mysql数据库上,oracle中 Hibernate配置都是这样<generator class="sequence">    <param name="sequence">SEQUENCE_CHILDREM_ARCHIVE_ID</param></generator>移植到mysql数据库中之后 <generator c

Mysql的序列

Mysql自带的序列:字段设置为int,属性里面选上"自动增长"即可: 在插入数据的时候可以不插入该字段的值,mysql会自动处理:

mysql#自定义序列

原文 mysql主键不用自增数字的时候,可以参考如下方式,我抄来的. -- 创建公共的序列表 DROP TABLE IF EXISTS t_common_sequence; CREATE TABLE t_common_sequence ( seq_name VARCHAR(100) NOT NULL COMMENT '序列名称', current_val INT NOT NULL COMMENT '当前值', increment_val INT NOT NULL DEFAULT '1' COMM

MySQL 序列 AUTO_INCREMENT

MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用AUTO_INCREMENT MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长. mysql> CREATE TABLE insect -> ( ->

MySQL 序列使用

MySQL 序列使用 MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用AUTO_INCREMENT MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长. mysql> CREATE TABLE insect

MySQL 序列使用:使用 AUTO_INCREMENT、获取AUTO_INCREMENT值

MySQL 序列使用 MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用 AUTO_INCREMENT MySQL 中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表 insect, insect 表中 id 无需指定值可实现自动增长. mysql> CREATE TABLE

MySQL Cookbook第11章读书笔记

1,创建一个序列列兵生成序列值 使用auto_increment 如果显式地把ID设置成一个非NULL的值,有两个结果: a,这个值在表中出现,由于id列是主键,因而不允许重复,故会出现错误 b,这个值没有出现例如,你的表中id序列值为1到8,此时你插入一个新航,并设置为20,那么下一个自动产生的序列就会从21开始,而9-19的值变得不可用. 2,序列生成的行删除的效果 例如在insect表中: 比如要求只能是昆虫,删除millipede,millbug,多余的蚂蚁 删除2会给序列中间带来一个缺