最近在梳理数据生命周期管理的细节时,发现了一个小问题,那就是MySQL的主键命名策略,似乎会忽略任何形式的自定义命名。
也就意味着你给主键命名为idx_pk_id这种形式,在MySQL里面会统一按照PRIMARY来处理。
当然我们可以在这个基础之上做一些拓展和补充。
首先来复现下问题,我们连接到数据库test,然后创建表test_data2.
mysqlusetest
mysqlcreatetabletest_data2(idint,namevarchar(30));
QueryOK,0rowsaffected(0.05sec)
接着创建一个主键,命名为idx_pk_id,从执行情况来看,MySQL是正常处理了。
mysqlaltertabletest_data2addprimarykeyidx_pk_id(id);
QueryOK,0rowsaffected(0.02sec)
Records:0Duplicates:0Warnings:0
为了进一步对比,我们添加一个唯一性索引(辅助索引),来看看它们的差异。
mysqlaltertabletest_data2adduniquekeyidx_uniq_name(name);
QueryOK,0rowsaffected(0.00sec)
Records:0Duplicates:0Warnings:0
查看主键命名方法1:使用showindexes命令
要查看MySQL索引的信息,使用showindexesfromtest_data2就可以。
mysqlshowindexesfromtest_data2\G
***************************1.row***************************
Table:test_data2
Non_unique:0
Key_name:PRIMARY
Seq_in_index:1
Column_name:id
Collation:A
Cardinality:0
Sub_part:NULL
Packed:NULL
Null:
Index_type:BTREE
Comment:
Index_