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报错this function has none of deterministic问题

phpmyadmin 1045错误无法登录mysql服务器怎么办

初始化mysql的数据库失败怎么办

mysql中多表不关联查询的实现方法详解

mysql中有没有事务?

浅谈mysql事务管理(基础)

详解mysql通讯协议

mysql数据库的多表操作

比较详细的mysql字段类型说明

mysql表的连接查询有哪些?

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


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

数据库系统概念 第6版

机械工业出版社

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



打赏

取消

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

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

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

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

评论

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