En Oracle 12c las tablas ahora cuentan con la opción de crear columnas de manera invisible, estas columnas no son vistas ni se permite usarlas a menos que se nombren explicitamente, a continuación un ejemplo sencillo:
[oracle@orcl12c ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Mon Jul 1 15:02:23 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
SQL> create table dgomez (a int, b int invisible, c int);
Table created.
SQL> desc dgomez;
Name Null? Type
----------------------------------------- -------- -------------
A NUMBER(38)
C NUMBER(38)
SQL> alter table dgomez modify (b visible);
Table altered.
SQL> desc dgomez;
Name Null? Type
----------------------------------------- -------- -------------
A NUMBER(38)
C NUMBER(38)
B NUMBER(38)
Vean que cada vez que la columna invisible sufre una modificación (de invisible a visible o viceversa) dicha columna pasa a ser la ultima de la tabla, en este caso la columna B se creó en la posicion número 2, pero cuando se le modificó para que fuera visible pasó a ser la tercer columna (la ultima).
SQL> insert into dgomez values(1,2,3);
insert into dgomez values(1,2,3)
*
ERROR at line 1:
ORA-00913: too many values
SQL> insert into dgomez (a,b,c) values (1,2,3);
1 row created.
Vean que no se pudo realizar la inserción de un registro con los tres valores porque no se está nombrando las tres columnas de manera explicita, una vez nombrando las tres columnas se podrá realizar el insert.
SQL> select * from dgomez;
A C
---------- ----------
1 3
SQL> select a,b,c from dgomez;
A B C
---------- ---------- ----------
1 2 3
En este ultimo ejemplo, para las consultas tambien la columna no se podrá observer a menos que se le nombre explícitamente en la clausula SELECT.
No hay comentarios:
Publicar un comentario