我们的数据库中有一些现在已经过时的列。这些列目前没有任何用途,但我们不能只是删除列,因为我们可能需要数据,以找出为什么我们的应用程序在过去的某个时候会这样处理它。
我们看到,在Oracle12c中,我们可以选择将列设置为“不可见”。这似乎适合我们的用例:我们不必删除该列,但该列在日常工作中不会造成麻烦。在查看表时不占用可视空间,并且在查询表中的整行时不包括在内。
由于我们没有使用“隐形”的经验,我们想知道是否有一些我们没有看到的负面因素,或者是否有我们应该考虑的其他“最佳实践”。
发布于 2020-04-09 00:31:00
将过时的列设置为invisible是弃用它们的好方法。
您需要做的主要事情是在使not null约束不可见之前将其删除。或者,您可能会得到一些意外的错误:
create table t (
c1 int,
c2 int
invisible
not null
);
desc t
Name Null? Type
C1 NUMBER(38)
insert into t values ( 1 );
ORA-01400: cannot insert NULL into ("CHRIS"."T"."C2")最坏的情况是,您确实发现了一个问题,并使其再次可见。虽然这将change the column order for select *。
https://stackoverflow.com/questions/61097970
复制相似问题