viernes, 14 de octubre de 2016

Como se Puede Servirse de una Secuencia para Poner un Valor Predeterminado en una Columna en Oracle 12.1

Hallé la idea para este ejemplo aquí. 

En Oracle 12.1 se puede emplear una secuencia para poner un valor predeterminado en una columna de una tabla. Aquí está un ejemplo sencillo que acabo de crear: 

SQL> create sequence seq1 
  2  /

Sequence created.

SQL> create table tab1 
  2  (col1 number default seq1.nextval, 
  3   col2 varchar2(10))
  4  /

Table created. 

SQL> insert into tab1(col2) values('Andrew') 
  2  /

1 row created. 

SQL> insert into tab1(col2) values('Brian')
  2  /

1 row created.

SQL> select * from tab1 order by col1
  2  /

      COL1 COL2
---------- ------------------------------
         1 Andrew
         2 Brian 

SQL>

Pero si usted intenta utilizar INSERT ALL para crear dos (o más de dos) filas simultáneamente, Oracle pone el mismo valor predeterminado en cada fila. Aquí está un ejemplo para mostrarle a usted lo que quiero decir:

SQL> insert all
  2  into tab1(col2) values('Colin')
  3  into tab1(col2) values('David')
  4  select * from dual
  5  /

2 rows created.

SQL> select * from tab1 order by col1
  2  /

      COL1 COL2
---------- ------------------------------ 
         1 Andrew 
         2 Brian 
         3 Colin 
         3 David 

SQL>

14th October 2016:
Shared via LinkedIn