MYSQL 的PRIMARY KEY 不能重命名,在调试程序时,遇到DUPLICATE KEY 错误时会给调试程序造成极大的困扰,所以建议在工程项目中,使用UNIQUE INDEX NOT NULL 替换PRIMARY KEY。
题外话:MYSQL与ORACLE相比,很多地方并不完善,需要程序员更多的用心做一些额外的事情。
下面这个SQL 可以自动生成你想要的脚本,实现将现有的业务表里的主键替换为唯一索引。
select
concat(' alter table ', table_schema, '.', table_name ,' drop primary key , add unique index pk$', table_name, '(', group_concat(column_name order by ordinal_position) , ') ;') new_sql
from information_schema.KEY_COLUMN_USAGE
where table_schema='ayst_share'
and constraint_name='PRIMARY'
group by table_schema, table_name
usage sample :
call findobj('pk$user_status_log');
call findcode('user_status_log') ;