2012-08-29 62 views
2
Product Version Oracle 10g 

我在oracle中有一个表,其中包含一些数据。有一个Number(10,0)类型的列。现在我想将其更改为数字(10,2)以允许小数。但要改变,oracle不允许删除现有数据。 我知道我可以采取数据备份 - >删除数据 - >改变类型 - >插入数据回来。 但问题是有一个自动插入列从序列中获取值。 所以,当我插回来那些id会改变....我不知道,如果任何人使用该ID作为密钥来获取数据。那么,如何可以改变它,而不会改变的ID ..在oracle中更改数据类型而不删除数据

请帮助..

+4

可能你想要号码(12,2)。例如,数字(7,2)是一个小数点前有5位数字和小数点后两位数字的数字。 –

+0

你可以禁用触发器。 “改变触发器x禁用”。 –

+0

@FlorinGhita我需要(12,2)... thnks指出...将尝试禁用触发器 - >插入数据 - >启用触发器 – Andromeda

回答

3

也许你希望号(12,2),以保持精度。 例如,数字(7,2)是一个小数点前有5位数字和小数点后两位数字的数字。

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

5
  1. 添加新的NUMBER(12,2)列,但名称不同。
  2. 更新新列,转换旧列中的所有值。
  3. 丢弃旧列。
  4. 用所需的名称重新命名新列。