甲骨文 | ORA-01439: 要修改的列必须为空才能更改数据类型。无法在 Oracle 10g 中将数据类型编号更改为 nvarchar

问题描述 投票:0回答:2

我想要不删除和移动数据。

我无法在 Oracle 10g 中将数据类型编号更改为 nvarchar。它显示的消息类似于

ORA-01439: column to be modified must be empty to change datatype

我表中的数据和列已设置为 NOT NULL,因此我无法将其设置为空或空白。 更改列是主键,它与外键相关的表数量。

有什么快速的解决方案可以解决它吗?

oracle oracle10g alter-table
2个回答
8
投票

建议方式:

  1. 暂停约束
  2. 创建另一列 nvarchar 类型
  3. 从数字列复制到新的 nvarchar 列
  4. 删除数字栏
  5. 将 nvarchar 列重命名为旧列
  6. 重建索引
  7. 激活约束。

您不能以其他方式更改 Oracle 中的列类型(据我所知)。


5
投票
  1. 使用新名称添加新列。
  2. 从旧列更新新列。
  3. 删除旧列。
  4. 使用旧列名称重命名新列。

注意我看到您还提到了Oracle 11g标签,但是您的问题说您使用的是10g。如果您使用的是 11g 或更高版本,则可以使用VIRTUAL COLUMN

© www.soinside.com 2019 - 2024. All rights reserved.