Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-保留ID';s在初始自动增量值之前_Mysql_Sql_Innodb_Auto Increment - Fatal编程技术网

MySQL-保留ID';s在初始自动增量值之前

MySQL-保留ID';s在初始自动增量值之前,mysql,sql,innodb,auto-increment,Mysql,Sql,Innodb,Auto Increment,我的用户表: CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(64) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ALTER TABLE users AUTO_INCREM

我的用户表:

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE users AUTO_INCREMENT = 1000;
现在我将开始添加记录(第一个用户ID将是1000)。在初始自动增量值之前手动添加用户是否有任何问题

INSERT INTO `users` (`id`, `username`) VALUES (1, 'something');
# ...
INSERT INTO `users` (`id`, `username`) VALUES (900, 'something');
而普通插入只使用下一个增量值

INSERT INTO `users` (`username`) VALUES ('something else'); # id: 1000
INSERT INTO `users` (`username`) VALUES ('something else'); # id: 1001
基本上我想保留从1到999的ID,这样我就可以在不破坏
自动增量的情况下手动添加它们


这是否会产生任何问题?我也有引用此用户id的外键。

您可以按您的建议执行。手动插入值,然后允许
自动增量
工作

没有为AUTO_INCREMENT列指定值,因此MySQL 自动分配序列号。您还可以显式地 将0指定给列以生成序列号。如果列为 声明为NOTNULL时,也可以将NULL分配给要 生成序列号将任何其他值插入到 “自动增量”列,该列设置为该值,并且 序列被重置,以便下一个自动生成的值 从插入值开始按顺序执行。

保留范围
1-999
后,计数器从
1000
开始。您需要确保不会尝试插入重复的值,因为您可能会违反
主键

输出:

╔═══════╦═══════════╗
║  id   ║ username  ║
╠═══════╬═══════════╣
║    1  ║ something ║
║  999  ║ something ║
║ 1000  ║ new value ║
╚═══════╩═══════════╝

不,据我所知,它不起作用,只有在省略主键时,才会使用自动递增。更多信息可在此处找到:


如果id的含义超出了数据库的内部范围,请不要使用自动增量。“这会让你在今后的道路上陷入麻烦。”里克詹姆斯,请告诉我案件何时会解决。