【问题标题】:Changing data type in oracle without deleting the data在不删除数据的情况下更改 oracle 中的数据类型
【发布时间】:2012-08-29 07:54:39
【问题描述】:
Product Version Oracle 10g

我在 oracle 中有一个表,里面有一些数据。有一列类型为 Number(10,0)。现在我想将其更改为 Number(10,2) 以允许小数。但要改变的是,oracle是不允许不删除现有数据的。 我知道我可以进行数据备份-> 删除数据-> 更改类型-> 插入数据。 但问题是有一个从序列中获取值的自动插入列。 因此,当我将其插入回去时,这些 id 会改变....我不确定是否有人使用该 id 作为获取数据的键。那么如何在不更改 ID 的情况下更改它..

请帮忙..

【问题讨论】:

  • 可能你想要数字(12,2)。例如,number(7,2) 是一个小数点前 5 位和小数点后 2 位的数字。
  • 您可以禁用触发器。 “更改触发器 x 禁用”。
  • @FlorinGhita 我需要 (12,2) ...谢谢指出...将尝试禁用触发器 -> 插入数据 -> 启用触发器
  • 您仍然使用number(12,2) 获得ORA-01440 吗?我不在 11g 中,但可能取决于我认为存在的数据。
  • @AlexPoole No...Number(12,2) 没有任何问题......当你减少它时,只会出现那个错误

标签: oracle oracle10g


【解决方案1】:
  1. 添加新的 NUMBER(12,2) 列,但名称不同。
  2. 更新新列,转换旧列中的所有值。
  3. 删除旧列。
  4. 用所需的名称重命名新列。

【讨论】:

    【解决方案2】:

    您可能希望 number(12,2) 保持精度。 例如 number(7,2) 是一个小数点前 5 位和小数点后 2 位的数字。

    或者,您可以禁用触发器/执行工作/启用触发器。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多