这是阿里巴巴Java开发手册中MySQL建表规约中关于索引的定义,其中:主键索引名为pk_字段名
InnoDB不是默认会为主键创建索引么,这个索引如何命名?
请MySQL大佬解惑
这是阿里巴巴Java开发手册中MySQL建表规约中关于索引的定义,其中:主键索引名为pk_字段名
InnoDB不是默认会为主键创建索引么,这个索引如何命名?
请MySQL大佬解惑
自动创建的名称每次都不一样, 不便于后续的脚本化管理.
可以用
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.
4 回答1.6k 阅读✓ 已解决
8 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
4 回答2.2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.8k 阅读
1 回答949 阅读✓ 已解决
主键索引命名应该是针对Oracle或其他数据库吧,MySQL暂时没找到指定主键索引名字的语法,一般主键索引名默认都是PRIMARY。
MySQL和Oracle对于主键索引还有不一样的地方,Oracle的主键索引就是额外的建了一个具有唯一和不为空属性的索引,而MySQL的表本身是一个聚集索引,索引键就是主键,所以并不是为主键建索引,而是以主键为索引键,以B树的结构去组织表数据。
对于主键索引的名字,只针对能人工指定主键索引名字的数据库,在管理的时候,谁也说不准索引叫什么名字,第一是数据库内部的不确定性,你并不能预测索引名是什么,第二就是涉及规范了,在没有规范约束的情况下,有些人让数据库自己去确定索引名,有些人喜欢自己指定名字。那么在管理主键的时候,不能避免地,都要去确认一下主键是哪些列,对应的索引是什么。
所以为了方便管理,也出于规范化,干脆统一要求主键的命名规范了。