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.