首页 > 解决方案 > 为什么 information_schema.TABLES 显示 AUTO_INCREMENT 列的值不正确?

问题描述

我想获得下一个要放入自动增量列的值,所以首先,我显示我有哪些表:用户信息:

"CREATE TABLE userinfo (id int NOT NULL AUTO_INCREMENT,firstname varchar(20) DEFAULT NULL, lastname varchar(20) DEFAULT NULL, login varchar(20) NOT NULL,password varchar(20) NOT NULL, email varchar(30) NOT NULL UNIQUE, typeof varchar(9) DEFAULT 'standart', onoff tinyint(1) NOT NULL, lastvisit date DEFAULT NULL, PRIMARY KEY (id))

我在 userinfo 表中输入了两个用户,这里是“select* from userinfo”,输入是:

id  |firstname  |lastname   |login  |password   |email  |typeof |onoff  |lastvisit <br>
1   |Frost  |Frost  |Frost  |givanchy   |Frost  |standart   |1  |NULL <br>
2   |Frost1 |Frost1 |Frost1 |givanchy   |Frost1 |standart   |1  |NULL

所以按逻辑,下一个自动增量值应该是 3,我正在使用下一个语法:

SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "kvsl" AND TABLE_NAME = "userinfo",input is:<br>

在此处输入图像描述
AUTO_INCREMENT 10
,它总是 10 为什么?
顺便说一句,给出正确的下一个自动增量值的下一个语法,“show create table kvsl.userinfo”,输入是:
'userinfo',

'CREATE TABLE `userinfo` (\n  `id` int NOT NULL AUTO_INCREMENT,\n  `firstname` varchar(20) DEFAULT NULL,\n  `lastname` varchar(20) DEFAULT NULL,\n  `login` varchar(20) NOT NULL,\n  `password` varchar(20) NOT NULL,\n  `email` varchar(30) NOT NULL,\n  `typeof` varchar(9) DEFAULT \'standart\',\n  `onoff` tinyint(1) NOT NULL,\n  `lastvisit` date DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `login` (`login`),\n  UNIQUE KEY `email` (`email`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci'

你怎么能看到下一个插入 auto_increment 的值是 3 为什么会这样?因为我需要在 int 变量中返回下一个 auto_increment 值;
获取下一个或当前自动增量值以存储在这样的变量中的最佳方法是什么

begin
declare curvala int;
set int =(SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "kvsl" AND TABLE_NAME = "userinfo");    
end;//

标签: mysqlsqlauto-increment

解决方案


推荐阅读