获取mysql数据库自增id的最大值

Posted gcche

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取mysql数据库自增id的最大值相关的知识,希望对你有一定的参考价值。

--穿建临时表保存每个表的最大id;
CREATE TABLE `table_max_id` (
`max_id` bigint(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


--穿建存储过程获取每个表的最大id存储至table_max_id;

CREATE PROCEDURE get_all_maxid()
BEGIN
DECLARE tb_name varchar(50); --
DECLARE done boolean default 0; --
DECLARE cur CURSOR FOR SELECT table_name --
FROM information_schema.columns WHERE table_schema = ‘ss_dlp‘ AND column_name =‘id‘ ORDER BY table_name DESC; --
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; --
TRUNCATE table_max_id; --
OPEN cur; --
REPEAT --
FETCH cur INTO tb_name; --
SET @sql=CONCAT(‘INSERT INTO table_max_id(max_id) SELECT MAX(id) FROM ‘,tb_name); --
PREPARE stmt1 FROM @sql; --
EXECUTE stmt1 ; --
DEALLOCATE PREPARE stmt1; --
until done end repeat; --
CLOSE cur; --
END;

--穿建函数从table_max_id中获取最大id;

create function get_id()
returns int
begin
return (select IFNULL(MAX(max_id),0) as max_id from table_max_id) + 1; --
end ;

--调用存储过程及函数获取最大值
call get_all_maxid();
INSERT INTO `ss_dlp`.`login_log` (`id`, `create_time`, `is_deleted`, `update_time`, `version`, `device_name`, `fullname`, `ip`, `operation`, `type`, `username`, `error_message`, `success`)
VALUES (get_id(), ‘1577328593977‘, b‘0‘, ‘1577328593977‘, ‘0‘, NULL, ‘adimin_test‘, ‘127.0.0.1‘, ‘登录成功1‘, ‘Admin‘, ‘admin‘, NULL, b‘1‘);
 

以上是关于获取mysql数据库自增id的最大值的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中如何获取下一条插入的自增ID

mysql自增id获取

mysql id自动增长 怎么查询最大值

mysql一个表id不是自增的,而且已经有数据了,现在想将id设为自增的sql语句:

Mysql对自增主键ID进行重新排序

Mysql大数据量问题与解决