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') ;
本文介绍了一种在MYSQL中使用唯一索引替代主键的方法,并提供了一个实用的SQL脚本,用于自动生成替换现有业务表主键所需的代码。
1109

被折叠的 条评论
为什么被折叠?



