假设我有一个具有以下定义的表
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
显然这不会检查现有数据的有效性。
关于oracle - 在 oracle 中缩小一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7741468/