Как изменить тип данных столбца без потери данных в Mysql - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть столбец city_id, который имеет varchar (255) и нулевые значения . Я хочу изменить его на большое целое число .

Я буду использовать:

ALTER TABLE Customer
ALTER COLUMN CITY_ID BIGINT

Потеряю ли я какие-либо данные?

1 Ответ

2 голосов
/ 02 апреля 2019

Вы можете попробовать добавить новый столбец с большим целым числом в качестве промежуточного шага:

-- 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.

...