我之前的开发人员创建了一个名为“Tools”的数据库表,它包含两个字段,toolid - varchar(255) 和 toolname - varchar(100)。
toolid 字段的类型为 varchar,它是主键。表中有数据。
我想将 varchar toolid 字段转换为 int 类型,同时保留带有它们的键的数据,我也希望这个字段是自动递增的。
目前,键是数字,例如 12 或 22 或 3。
什么是最好的方法来做到这一点?
如果您只想将 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)
| 归档时间: |
|
| 查看次数: |
8886 次 |
| 最近记录: |