我有下面的表模式,它将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

如何删除列的主键?


当前回答

首先修改列以删除auto_increment字段,如下所示: 修改表user_customer_permission

接下来,删除主键。 删除表user_customer_permission主键

其他回答

ALTER TABLE `table_name` ADD PRIMARY KEY( `column_name`);

首先备份数据库。然后删除与该表关联的任何外键。截断外键表。截断当前表。删除所需的主键。使用sqlyog或workbench或heidisql或dbeaver或phpmyadmin。

如果你有复合主键,这样做- ALTER TABLE table_name DROP primary key,添加主键(col_name1, col_name2);

首先修改列以删除auto_increment字段,如下所示: 修改表user_customer_permission

接下来,删除主键。 删除表user_customer_permission主键

在SQL管理器中找到表,右键单击它并选择设计,然后右键单击小键图标并选择删除主键。