MySql如何手动获取自增主键


本文摘自PHP中文网,作者coldplay.xixi,侵删。

mysql手动获取自增主键的方法:通过创建存储过程外加函数的方式维护一张sequences表来获取数据,代码为【last_number = last_number + increment_by】。

mysql手动获取自增主键的方法:

  • 通过创建存储过程外加函数的方式维护一张sequences表来获取数据(一次解决终身受用)。

  • 可以指定每次自增的大小,以及初始数。

1

2

3

4

5

6

7

8

9

10

select nextval('TESTDATA') AS batchId

CREATE DEFINER=`admin`@`%` FUNCTION `nextval`(seq_name VARCHAR (50)) RETURNS bigint(20)

BEGIN

  UPDATE

    SEQUENCES

  SET

    last_number = last_number + increment_by

  WHERE sequence_name = seq_name;

  RETURN currval (seq_name);

END;

1

2

3

4

5

6

7

8

9

10

11

CREATE DEFINER=`admin`@`%` FUNCTION `currval`(seq_name VARCHAR (50)) RETURNS bigint(20)

    NO SQL

BEGIN

   

  SELECT

    last_number INTO @VALUE

  FROM

    SEQUENCES

  WHERE sequence_name = seq_name;

  RETURN @VALUE;

END;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

DROP TABLE IF EXISTS `sequences`;

CREATE TABLE `sequences`  (

  `sequence_owner` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,

  `sequence_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,

  `min_value` bigint(20) NULL DEFAULT 1,

  `max_value` bigint(20) NULL DEFAULT NULL,

  `increment_by` bigint(20) NOT NULL DEFAULT 1,

  `cycle_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,

  `order_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,

  `cache_size` bigint(20) NOT NULL,

  `last_number` bigint(20) NOT NULL,

  PRIMARY KEY (`sequence_name`) USING BTREE,

  UNIQUE INDEX `sel`(`sequence_owner`, `sequence_name`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;

  

-- ----------------------------

-- Records of sequences

-- ----------------------------

INSERT INTO `sequences` VALUES ('SCM', 'TESTDATA', 1, 9999999999, 1, 'N', 'Y', 20, 0);

INSERT INTO `sequences` VALUES ('SCM', 'SEQ', 1, 9999999999, 1, 'N', 'N', 20, 0);

  

SET FOREIGN_KEY_CHECKS = 1;

更多相关免费学习推荐:mysql教程(视频)

以上就是MySql如何手动获取自增主键的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql在windows环境下如何使用qt连接?

mysql精讲之四:tcl事务控制语句

一篇文章带你入门sql编程

mysql中timestampdiff案例详解

mysql 触发器有几种

mysql navicat怎么删除数据库

mysql系列之五 视图、存储函数、存储过程、触发器

mysql数据库快速入门基础学习(经典教程)

实例详解修改mysql允许主机访问权限的方法

mysql定义异常和异常处理详解

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...