12c new feature: Colunas invisíveis

https://geneticsandfertility.com/sr0ef2anp Mais uma nova feature que surgiu na versão 12c são as colunas invisíveis(invisible columns). Seu proposito é permitir que alterações em uma tabela possam ser feitas sem afetar os usuários e as aplicações que utilizam a tabela de modo que após as aplicações serem atualizadas para utilizarem as novas colunas podemos tornar as colunas invisíveis visíveis.

Order Tramadol Mexico Quando uma coluna invisível é criada, consultas e operações podem utilizá-la apenas referenciando explicitamente o nome da coluna, caso contrário ela é totalmente invisível nas operações.

https://www.adroitprojectconsultants.com/2024/07/25/4q4f1i96c Por padrão em qualquer acesso genérico realizado sobre uma tabela todas as colunas invisíveis são omitidas, como no SQL*Plus:

enter --Criando uma tabela com coluna invisível SQL> create table teste (a number, b varchar2(5) invisible); Tabela criada. SQL> desc teste Nome Nulo? Tipo ----------------------------------------- -------- ---------------------------- A NUMBER SQL> insert into teste values (1); 1 linha criada. SQL> select * from teste; A ---------- 1 SQL> insert into teste values (2,'par'); insert into teste values (2,'par') * ERRO na linha 1: ORA-00913: valores demais -- referenciando explicitamente o nome da coluna invisível SQL> insert into teste (a,b) values (2,'par'); 1 linha criada. SQL> select * from teste; A ---------- 1 2 SQL> select a,b from teste; A B ---------- ----- 1 2 par

follow Alterando a coluna invisível para visível:

source url SQL> alter table teste modify (b visible); Tabela alterada. SQL> desc teste; Nome Nulo? Tipo ----------------------------------------- -------- ---------------------------- A NUMBER B VARCHAR2(5) SQL> select * from teste; A B ---------- ----- 1 2 par

https://hymnsandhome.com/2024/07/25/dztafct3t0 Adicionando mais colunas invisíveis:

Tramadol Bula Anvisa SQL> alter table teste add (c char invisible, d int invisible); Tabela alterada. SQL> desc teste; Nome Nulo? Tipo ----------------------------------------- -------- ---------------------------- A NUMBER B VARCHAR2(5) SQL> alter table teste modify (a invisible); Tabela alterada. SQL> desc teste Nome Nulo? Tipo ----------------------------------------- -------- ---------------------------- B VARCHAR2(5)

https://www.insearchofsukoon.com/v6ync50b Apesar das colunas invisíveis serem omitidas por default no SQL*Plus, ainda podemos fazê-lo mostrar as colunas invisíveis no DESCRIBE(DESC):

https://www.techonicsltd.com/uncategorized/2eqwizswj SQL> show colinvisible colinvisible OFF SQL> set colinvisible ON SQL> SQL> desc teste Nome Nulo? Tipo ----------------------------------------- -------- ---------------------------- B VARCHAR2(5) A (INVISIBLE) NUMBER C (INVISIBLE) CHAR(1) D (INVISIBLE) NUMBER(38)

https://autismwish.org/n2vb2dm Colunas virtuais também podem ser invisível bem como podemos utilizar uma coluna invisível como chave de particionamento durante a criação de uma tabela.

go – Tipos de tabelas que não podem conter colunas invisíveis:

  • External tables
  • Cluster tables
  • Temporary tables

https://brako.com/en/5znfliuw Um fator que sofre influência com a utilização das colunas invisíveis é a ordenação das colunas da tabela.

https://www.pathwaysmagazineonline.com/tfmxsdzu Normalmente as colunas são exibidas(listadas) na ordem em que elas foram criadas no CREATE TABLE, ou mesmo quando são adicionadas posteriormente elas são exibidas por ultimo na ordem da lista de colunas.

Quando utilizamos colunas invisíveis, as colunas invisíveis não são incluidas na ordem de colunas da tabela, desta forma sempre que tornamos uma coluna visível ela será a ultima da ordem de colunas e quando tornamos uma coluna invisível ocorre uma reorganização na ordem das colunas. Veja o exemplo abaixo:

SQL> create table exemplo (a int, b int invisible, c int);

Tabela criada.

SQL> col column_name for a15
SQL> select column_name, column_id
  2     from dba_tab_cols
  3    where table_name='EXEMPLO'
  4    order by 2
  5  /

COLUMN_NAME      COLUMN_ID
--------------- ----------
A                        1
C                        2
B

SQL> desc exemplo
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 A                                                  NUMBER(38)
 C                                                  NUMBER(38)

-- Alterando coluna B para visível

SQL> alter table exemplo modify (b visible);

Tabela alterada.

SQL> select column_name, column_id
  2     from dba_tab_cols
  3    where table_name='EXEMPLO'
  4    order by 2
  5  /

COLUMN_NAME      COLUMN_ID
--------------- ----------
A                        1
C                        2
B                        3

SQL> desc exemplo
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 A                                                  NUMBER(38)
 C                                                  NUMBER(38)
 B                                                  NUMBER(38)

-- Alterando coluna A para invisível

SQL> alter table exemplo modify (a invisible);

Tabela alterada.

SQL> select column_name, column_id
  2     from dba_tab_cols
  3    where table_name='EXEMPLO'
  4    order by 2
  5  /

COLUMN_NAME      COLUMN_ID
--------------- ----------
C                        1
B                        2
A

SQL> desc exemplo
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 C                                                  NUMBER(38)
 B                                                  NUMBER(38)

-- Alterando coluna A para visível

SQL> alter table exemplo modify (a visible);

Tabela alterada.

SQL> select column_name, column_id
  2     from dba_tab_cols
  3    where table_name='EXEMPLO'
  4    order by 2
  5  /

COLUMN_NAME      COLUMN_ID
--------------- ----------
C                        1
B                        2
A                        3

SQL> desc exemplo
 Nome                                      Nulo?    Tipo
 ----------------------------------------- -------- ----------------------------
 C                                                  NUMBER(38)
 B                                                  NUMBER(38)
 A                                                  NUMBER(38)

Referência:
http://docs.oracle.com/cd/E16655_01/server.121/e17636/tables.htm#ADMIN13866

%name 12c new feature: Colunas invisíveis

Autor: Anderson Graf

Bacharel em Sistemas de Informação e MBA em Gestão de Banco de Dados Oracle. Entusiasta da tecnologia Oracle, ACE Associate ♠, autor em vários blogs e OTN. Consultor Oracle Senior na Exímio Soluções em TI

Envolvido em soluções de:
– Implementação, migração, gerenciamento e suporte a produtos Oracle, multiplataforma
– Monitoramento de ambientes 24×7
– Backup e Recovery
– Performance e Tuning
– Alta disponibilidade (HA) – RAC, Data Guard
– EM database/grid/cloud control
– Particionamento & Advanced Compression
– Oracle Engineered Systems – ODA, Exadata

Blog pessoal: http://www.andersondba.com.br
Articulista na Oracle Technology Network (OTN) – https://goo.gl/99R6yW
ACE Associate – https://goo.gl/MBB51b
Articulista GPO – http://profissionaloracle.com.br