修改Oracle编号列

Jon*_*yer 2 database oracle

我有一个表,其中一列是数字(22,12),其中应该是数字(22,2).由于它中包含数据,我不能只将列修改为正确的精度.

修复色谱柱的最有效方法是什么?

我之前没有提到的一件事是该表有几个索引,触发器并链接到其他表.

Eri*_*ler 5

ALTER TRIGGER trfoobar DISABLE;
ALTER TABLE foobar ADD (newcol number);
UPDATE foobar SET newcol=oldcol, oldcol=null;
ALTER TABLE foobar MODIFY(oldcol number(22,2));
UPDATE foobar SET oldcol=newcol;
ALTER TABLE foobar DROP(newcol);
ALTER TRIGGER trfoobar ENABLE;
Run Code Online (Sandbox Code Playgroud)

  • 请注意,当您禁用触发器时,会立即禁用所有用户.进行此更改时,您可能需要撤消用户对表的DML访问权限. (2认同)