将设置为 varchar 的主键字段转换为 int 字段

Sno*_*Mac 3 mysql

我之前的开发人员创建了一个名为“Tools”的数据库表,它包含两个字段,toolid - varchar(255) 和 toolname - varchar(100)。

toolid 字段的类型为 varchar,它是主键。表中有数据。

我想将 varchar toolid 字段转换为 int 类型,同时保留带有它们的键的数据,我也希望这个字段是自动递增的。

目前,键是数字,例如 12 或 22 或 3。

什么是最好的方法来做到这一点?

Ric*_*son 5

如果您只想将 varchar 字段更改为 int 字段,当然不会让您这样做,因为数据类型不匹配,但是,一个非常简单的解决方法是:

创建第二个表,其中将包含主要字段的所有字段。

CREATE TABLE `Tools2` SELECT * FROM `Tools`;
Run Code Online (Sandbox Code Playgroud)

清空数据,因为我们需要将工具名从 varchar 更改为 int 并且当它已满时无法执行此操作。

TRUNCATE TABLE `Tools2`;
Run Code Online (Sandbox Code Playgroud)

好的,让我们更改字段类型。

ALTER TABLE `Tools2` CHANGE `toolname` `toolname` INT(11) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

现在让我们重新插入原始表中的数据。

INSERT INTO `Tools2` SELECT * FROM `Tools`;
Run Code Online (Sandbox Code Playgroud)

Tools2 现在是 Tools 的正确版本,因此请删除 Tools。

DROP TABLE `Tools`;
Run Code Online (Sandbox Code Playgroud)

最后,将 Tools2 重命名为 Tools,这样您就可以开始使用了。

RENAME TABLE `Tools2` TO `Tools`;
Run Code Online (Sandbox Code Playgroud)