小编gio*_*ano的帖子

MySQL - 如果最后一行被删除,自动增量不会依次递增

我有一个包含自动递增主键 ID 的表。如果我删除最后一行(最高 id,例如 id = 6)并插入新行,则新 id 从 7 开始。我必须更改哪个参数才能使主键从 6 开始?

CREATE TABLE animals (
 id MEDIUMINT NOT NULL AUTO_INCREMENT,
 name CHAR(30) NOT NULL,
 PRIMARY KEY (id)
) ENGINE=MyISAM;

INSERT INTO animals (name) VALUES
('dog'),('cat'),('penguin'),
('lax'),('whale'),('ostrich');
Run Code Online (Sandbox Code Playgroud)

结果:
id 名称
1 狗
2 猫
3 企鹅
4 松懈
5 鲸鱼
6 鸵鸟

DELETE FROM animals WHERE id = 6;
INSERT INTO animals (name) VALUES
('x');
Run Code Online (Sandbox Code Playgroud)

结果:
id 名称
1 狗
2 猫
3 企鹅
4 松懈
5 鲸鱼
7 …

mysql mariadb primary-key auto-increment

8
推荐指数
1
解决办法
2万
查看次数

MySQL auto_increment在MyISAM和InnoDB中提供不同的主键

我有一个带有自动增量主键的表。如果我想更改一行并添加新行,我会根据引擎 MyISAM 和 InnoDB 获得不同的主键。原表是:

pk.. 动物代码 动物名称 动物类别 有效日期 到期日期
1... 1... 狗... 米... 2013-10-21.... 9999-12-31
2... 2... 青蛙... ..一...2013-10-21..... 9999-12-31

如果我使用 MyISAM 运行更新/插入代码,我会得到以下信息:

pk.. 动物代码 动物名称 动物类别 有效日期 到期日期
1... 1... 狗... 米... 2013-10-21.... 2013-10-20
2... 2... 青蛙... .. 一个... 2013-10-21..... 9999-12-31
3 ... 1... 狗..... 米... 2013-10-21..... 9999 -12-31
4... 3... 猫... 米... 2013-10-21..... 9999-12-31

并使用InnoDB:pk..animal_codeanimal_nameanimal_class effective_dateexpiry_date
1...1...dogg...m...2013-10-21....2013-10-20
2...2...青蛙..... 一个... 2013-10-21..... 9999-12-31
4 ... 1... 狗..... 米... 2013-10-21.. ... 9999-12-31
5... 3... 猫... 米... 2013-10-21..... 9999-12-31

MyISAM …

mysql primary-key auto-increment

2
推荐指数
1
解决办法
1105
查看次数

标签 统计

auto-increment ×2

mysql ×2

primary-key ×2

mariadb ×1