show create table 看到的 AUTO_INCREMENT 会不断发生变化
1.show create table 看到的 AUTO_INCREMENT 根据插入数据,会不断发生变化,意思是每次都需要修改表结构吗?2.AUTO_INCREMENT自增值,存放在哪里?
3.每次如何获取自增值?
1、不需要修改表DDL信息;
2、8.0高版本中,会把自增ID信息持久化存储在redo log中;
3、每次insert完毕后,执行 last_insert_id() 即可,或者用 max() 函数; yejr 发表于 2022-10-20 16:38
1、不需要修改表DDL信息;
2、8.0高版本中,会把自增ID信息持久化存储在redo log中;
3、每次insert完毕后 ...
1.还是不清楚这里的 AUTO_INCREMENT 是怎么改变的?
CREATE TABLE `z` (
`id` int NOT NULL AUTO_INCREMENT,
`b` int DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `b` (`b`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb3
2. 所有表的自增id 都要存储到 redo吗?
3.last_insert_id() 指上次插入的自增id值,不同表插入自增id后,怎么保证,下次插入的就是当前表的下一个自增值
wangb 发表于 2022-10-26 15:01
1.还是不清楚这里的 AUTO_INCREMENT 是怎么改变的?
CREATE TABLE `z` (
`id` int NOT NULL AUTO_INCRE ...
问题1 & 2:
The current maximum auto-increment counter value is written to the redo log each time the value changes, and saved to an engine-private system table on each checkpoint. These changes make the current maximum auto-increment counter value persistent across server restarts.
详情戳 https://dev.mysql.com/doc/refman ... ement-handling.html wangb 发表于 2022-10-26 15:01
1.还是不清楚这里的 AUTO_INCREMENT 是怎么改变的?
CREATE TABLE `z` (
`id` int NOT NULL AUTO_INCRE ...
问题3:
如果你想获取当前表最大id,见我上次的回复。
如果担心插入时会产生最大id值冲突,则大可不必,innodb会自行处理。
页:
[1]