缩小oracle中的一列

假设我有一个具有以下定义的表

create table dummy (col1 number(9) not null)

这个dummy.col1中的所有值都是7位长.现在我想使用alter命令将此列的长度从9 – 7减少. Oracle给出了错误,即要修改的列必须为空以降低精度或比例.说得通.

我想问一下是否有任何减少列大小的工作?

>我无法删除列中的值.
>我无法将此列中的值复制到另一列,因为它有数万亿个数据.

解决方法

列大小与数据的物理存储方式无关(它们是可变长度)

例如如果存储在数字(38)中,数字(2)中的“23”将占用完全相同的空间

它纯粹是对可以存储在列中的最大数量的约束,因此您只需在列上添加约束:

ALTER TABLE dummy ADD 
CONSTRAINT c1
CHECK (col1 < 9999999)
ENABLE
VALIDATE;

如果你想让它更快一点,将VALIDATE更改为NovalIDATE显然这不会检查现有数据的有效性.

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...