Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

12c Coluna de preenchimento automático com valor de sequência


Na postagem do blog de ontem, escrevi sobre como criar uma tabela com um valor IDENTITY. Mas o novo recurso do Oracle 12c que eu gosto mais é permitir que uma sequência seja o gerador de números para o valor padrão de uma coluna. Para entender o que quero dizer, veja este exemplo:
SQL> create sequence test_seq;
Sequence created.
SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20));
Table created.

Como você pode ver, a coluna ID da minha tabela de teste possui uma cláusula DEFAULT que usa o NEXTVAL da sequência que criei. Agora vamos inserir alguns dados na tabela.
SQL> insert into test_tab (val) values ('first row');
1 row created.
SQL> insert into test_tab (val) values ('second row');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test_tab;
ID VAL
---------- --------------------
1 first row
2 second row

Como você pode ver, a sequência Oracle foi usada para preencher os valores. À primeira vista, isso facilitaria a vida do modelador de dados, pois não seria necessário seguir o caminho tradicional de codificar um gatilho para gerar o NEXTVAL e atribuir esse valor à coluna. No entanto, esse preenchimento automático do valor da coluna com a sequência só funciona se você não especificar um valor, se deixar como padrão. Se você declarar explicitamente o valor, esse método não usará a sequência. Um gatilho, se codificado corretamente, forçaria o uso do próximo valor da sequência para a coluna.