暂无图片
请问各位老大,mysql无主键表添加主键后TABLE_ID发生变化,请问是什么原理?
我来答
分享
小北
2024-02-11
请问各位老大,mysql无主键表添加主键后TABLE_ID发生变化,请问是什么原理?

给各位老大拜年里,祝新春快乐!

mysql无主键表添加主键后TABLE_ID发生变化,请问是什么原理?

版本mysql> select version();

±----------+
| version() |
±----------+
| 8.0.29 |
±----------+
1 row in set (0.00 sec)

use test;

create table test(id int,iq int);

test表没有主键,id是1206

select TABLE_ID,name from information_schema.INNODB_tables where name='test/test';

+----------+-----------+
| TABLE_ID | name |
+----------+-----------+
| 1206 | test/test |  《-------id是1206
+----------+-----------+
1 row in set (0.00 sec)

mysql> alter table test add primary key(id);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

添加主键后id变为

mysql> select TABLE_ID,name from information_schema.INNODB_tables where name='test/test';
+----------+-----------+
| TABLE_ID | name |
+----------+-----------+
| 1207 | test/test |
+----------+-----------+
1 row in set (0.00 sec)

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新

alter table test add primary key(id);命令若能执行成功,就等同于执行了如下操作:

create table testN (id int primary key,iq int);

insert into testN select * from test;

drop table test;

alter table testN rename to test;

所以TABLE_ID发生变化。

暂无图片 评论
暂无图片 有用 10
暂无图片
小北
题主
2024-02-12
谢谢大佬。麻烦您问一下,这个可以通过什么方法查看么? explain没法显示alter table test add primary key(id);这个的执行计划。 是否有什么方法可以查看ddl是怎么执行的?
小北

谢谢大佬。麻烦您问一下,这个可以通过什么方法查看么?

explain没法显示alter table test add primary key(id);这个的执行计划。

是否有什么方法可以查看ddl是怎么执行的?

暂无图片 评论
暂无图片 有用 6
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏