如何理解阿里巴巴开发手册中关于主键索引命名的规范?

这是阿里巴巴Java开发手册中MySQL建表规约中关于索引的定义,其中:主键索引名为pk_字段名
InnoDB不是默认会为主键创建索引么,这个索引如何命名?
请MySQL大佬解惑

clipboard.png

阅读 12.2k
2 个回答

主键索引命名应该是针对Oracle或其他数据库吧,MySQL暂时没找到指定主键索引名字的语法,一般主键索引名默认都是PRIMARY。
MySQL和Oracle对于主键索引还有不一样的地方,Oracle的主键索引就是额外的建了一个具有唯一和不为空属性的索引,而MySQL的表本身是一个聚集索引,索引键就是主键,所以并不是为主键建索引,而是以主键为索引键,以B树的结构去组织表数据。
对于主键索引的名字,只针对能人工指定主键索引名字的数据库,在管理的时候,谁也说不准索引叫什么名字,第一是数据库内部的不确定性,你并不能预测索引名是什么,第二就是涉及规范了,在没有规范约束的情况下,有些人让数据库自己去确定索引名,有些人喜欢自己指定名字。那么在管理主键的时候,不能避免地,都要去确认一下主键是哪些列,对应的索引是什么。
所以为了方便管理,也出于规范化,干脆统一要求主键的命名规范了。

自动创建的名称每次都不一样, 不便于后续的脚本化管理.

可以用

create table testpk(
id int,
nm text,
CONSTRAINT `pk_id` PRIMARY KEY (`id`)
);

指定约束名称, 但对Primary key, MySQL会忽略为主键指定的名称。

In MySQL, the name of a PRIMARY KEY is PRIMARY.

https://dev.mysql.com/doc/ref...

推荐问题