我有以下表模式,它将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如何删除列的主键?
发布于 2010-01-22 01:23:31
如果没有索引,维护自动增量列的开销就太大了,这就是为什么MySQL要求自动增量列是索引的最左侧部分。
在删除密钥之前,您应该删除自动增量属性:
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;发布于 2010-01-22 01:51:41
一行:
ALTER TABLE `user_customer_permission` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` )您也不会丢失自动增量,并且必须重新添加它,这可能会产生副作用。
发布于 2010-01-22 01:25:30
ALTER TABLE `user_customer_permission` MODIFY `id` INT;
ALTER TABLE `user_customer_permission` DROP PRIMARY KEY;https://stackoverflow.com/questions/2111291
复制相似问题