use*_*657 2 oracle types alter
当我运行alter查询时,出现错误,指出要修改的列必须为空。
Table : Monthly_Result (Id Number(38,0), dealer_ID varchar2, sales_revenue Number(38,2))
Run Code Online (Sandbox Code Playgroud)
dealer_Id 应该更改为Number(38,0)
请帮忙
正如Alex在评论中提到的那样,您需要添加新列;更新它并检查值是否正确转换;然后在准备好时删除旧列。
-- step 1
alter table monthly_result add tmp number(38, 0);
update monthly_result set tmp = to_number(dealer_id);
-- step 2
-- check values are set correctly in tmp
-- step 3
alter table monthly_result rename column dealer_id to dealer_id_old;
alter table monthly_result rename column tmp to dealer_id;
-- step 4
alter table monthly_result drop column dealer_id_old;
Run Code Online (Sandbox Code Playgroud)