sql >> Base de Datos >  >> RDS >> Oracle

12c Columna de relleno automático con valor de secuencia

En la publicación de blog de ayer, escribí sobre la creación de una tabla con un valor de IDENTIDAD. Pero la nueva característica de Oracle 12c que me gusta más es permitir que una secuencia sea el generador de números para el valor predeterminado de una columna. Para ver lo que quiero decir, mira este ejemplo:

SQL> create sequence test_seq;
Sequence created.
SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20));
Table created.

Como puede ver, la columna ID de mi tabla de prueba tiene una cláusula DEFAULT que usa el NEXTVAL de la secuencia que creé. Ahora insertemos algunos datos en la tabla.

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 puede ver, la secuencia de Oracle se usó para completar los valores. A primera vista, esto facilitaría la vida del modelador de datos porque no sería necesario seguir la ruta tradicional de codificar un disparador para generar el NEXTVAL y asignar este valor a la columna. Sin embargo, esta autocompletación del valor de la columna con la secuencia solo funciona si no especifica un valor, si lo deja predeterminado. Si indica explícitamente el valor, este método no utilizará la secuencia. Un activador, si está codificado correctamente, forzaría el uso del siguiente valor de la secuencia para la columna.