如何更改列数据类型而不会丢失Mysql中的数据

问题描述 投票:0回答:1

我有一个city_id列,其中包含varchar(255)和null值。我想将其更改为大整数。

我会用:

ALTER TABLE Customer
ALTER COLUMN CITY_ID BIGINT

我是否松动或损坏了任何数据?

mysql sql database alter-table alter
1个回答
2
投票

您可以尝试添加一个新的大整数列作为中间步骤:

-- add new column
ALTER TABLE Customer ADD COLUMN CITY_ID_NEW BIGINT;

-- populate new column
UPDATE Customer
SET CITY_ID_NEW = CAST(CITY_ID AS UNSIGNED);

-- drop old column and rename new column
ALTER TABLE Customer DROP COLUMN CITY_ID;
ALTER TABLE Customer CHANGE COLUMN CITY_ID_NEW CITY_ID BIGINT NULL DEFAULT NULL;

我假设您的整数值都是正数,即它们没有签名。如果需要有符号整数,则将更新中的强制转换更改为SIGNED

© www.soinside.com 2019 - 2024. All rights reserved.