I am trying to change a text column into a numeric one in a large table.
My idea was to add a new column, update it, drop the old column, and
rename the new one to the old name. I am hoping that that would make it
faster and minimize locking time though I'm not sure that it would.
I am therefore trying to execute the following but I'm getting an error
that the new column does not exist:
begin;
alter table some_table
add column if not exists amount_num numeric(30,12);
update some_table
set amount_num = amount_text::numeric(30,12);
alter table some_table
drop column amount_text;
alter table some_table
rename column amount_num to amount_text;
alter table some_table
drop column amount_num;
commit;
end;
Am I missing something? Is this supposed to work?
Would it have less locking than simply altering the column?
Thanks,
Igal