1

我想更改表的主键,最初是 id,现在我想将其更改为 userid

   smsusers(id,fname,lname,userid)

这里 id 是 varchar 类型,而 userid 是 int 类型

为此,我正在尝试以下查询

 ALTER TABLE smsusers DROP PRIMARY KEY

显示此错误

#1025 - Error on rename of '.\xrcwrn_sms\#sql-ae0_6f' to 
'.\xrcwrn_sms\smsusers' (errno: 150)

idofsmsusers作为外键与许多表相关联。

如何更改主键。

4

4 回答 4

6

这是一个例子:

ALTER TABLE `database`.`table`   
  DROP PRIMARY KEY,
  ADD PRIMARY KEY (`userid`);
于 2013-05-30T12:48:06.407 回答
1

ERROR NO:150 表示外键定义问题。我认为其他一些表有一个取决于这个 PK 的外键约束,所以你需要先删除它,然后再重建它。

于 2013-05-30T12:47:18.523 回答
1

该消息告诉您,您还不能删除主键,因为它被一个或多个外键引用。您需要先识别并删除外键,然后再删除主键。

于 2013-05-30T12:45:32.893 回答
0

我试过这个链接。这工作正常。我的步骤是

CREATE INDEX id_pk_unique ON smsusers (id)
ALTER TABLE parent DROP PRIMARY KEY;
ALTER TABLE parent ADD PRIMARY KEY (userid);
于 2013-05-30T13:02:42.807 回答