我有以下表模式,它将user_customers映射到实时MySQL数据库的权限:
mysql> describe user_customer_permission; +------------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_customer_id | int(11) | NO | PRI | NULL | | | permission_id | int(11) | NO | PRI | NULL | | +------------------+---------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) 我想删除user_customer_id和Permission_id的主键,并保留id的主键。
当我运行命令时:
alter table user_customer_permission drop primary key; 我收到以下错误:
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key 如何删除列的主键?
如果没有索引,则维护自动增量列会变得太昂贵,这就是为什么MySQL要求将自动增量列作为索引的最左侧部分的原因。
您应该在删除键之前删除autoincrement属性:
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL; ALTER TABLE user_customer_permission DROP PRIMARY KEY; 请注意,您有一个PRIMARY KEY涵盖所有三列的组合,并且id不能保证是唯一的。
如果碰巧是唯一的,你可以把它是一个PRIMARY KEY和AUTO_INCREMENT再次:
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。