Oracle Database 12c Column Identity

Páginas: 6 (1427 palabras) Publicado: 17 de diciembre de 2015
Oracle Database 12c, Columna Identity. ¿El fin de las secuencias?
Por Gerardo Tezza 

Viendo los new feature de la versión 12c, encontré que ahora podemos definir una columna con el  tipo de dato Identity, tal como lo tiene desde hace tiempo DB2.
Entonces me puse a investigar, tomando información de distintos blogs y documentos ,
Lo que vamos a ver a lo largo del artículo, es como implementarcolumnas Identity y su impacto para poder establecer su mejor forma de utilizarlas.
Vamos a trabajar sobre 3 ejes:
Implementación
Performance
Problemas en su implementación
Implementación:
Que significa una columna Identity?
Es incorporar a una columna la propiedad de ser autonumérica.

Ahora veremos cómo crear columnas con las distintas alternativas que tenemos al usar la cláusula IDENTITYSintaxis
COLUMN_NAME GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ]AS                                  
IDENTITY [ ( identity_options ) ]

Donde
ALWAYS      Indica que no será necesario introducir un valor para esta columna en una sentencia insert. Por el contrario indicar un valor aunque sea Null, da un error ORA-32795.
BY DEFAULT  Le permite utilizar Identity, si la columna no se hace  referenciaen la una sentencia insert, pero si se hace referencia a la columna, el valor especificado se utiliza en lugar de la  identidad. El intento de especificar el valor NULL en este caso se traduce en un error, ya que las columnas de identidad son siempre NOT NULL. 
BY DEFAULT Si una sentencia insert se ingresa un valor NULL se generará 
[ ON NULL ]  un nuevo valor, si en cambio si ingresa un valorpara esta columna, se insertará el valor de la sentencia
 
Ejemplo 
1)            Creación de tabla con clausula ALWAYS:
CREATE TABLE TEST(COL_1 NUMBER GENERATED ALWAYS

AS IDENTITY,

COL_2 VARCHAR2(50));

Esta tabla se crea con la columna COL_1 como Always As Identity. Esto indica que siempre se generará un valor para cada registro insertado.

Insert Into Test(col_2) Values  ('Prueba' );

1filas insertadas.

Esta inserción se lleva a cabo, en cambio la que veremos a continuación da un error;

Insert Into Test(col_1,col_2) Values  (999,'Prueba' ); 

Error SQL: ORA-32795: no se puede insertar una columna de  identidad siempre generada.

La cláusula Always As Identity crea una restricción de NOT NULL y no permite    que se ingresen valores externos.
2)            Creación detabla con clausula BY DEFAULT. Esta definición de la columna con la cláusula By Default, permite utilizar un valor externo en la inserción y en  caso de no existir un valor en un Insert para esta columna se utilizará el valor generado por el Identity. Esta cláusula no permite valores Null.

Create Table Identity_Default (Col_1 Number Generated By Default As Identity,

Col_2 Varchar2(50));

InsertInto  Identity_Default values (999,'Prueba');

1 filas insertadas.

Select * From Identity_Default;



 Insert Into  Identity_Default(col_2) values ('Prueba_2');

1 filas insertadas.

Select * From Identity_Default;



Insert Into  Identity_Default Values (Null,'Prueba');

Error SQL: ORA-01400: no se puede realizar una inserción NULL


Como vemos la primer sentencia  Insert incluye unvalor para la columna que tiene definido un Identity. Como vemos tomo el valor insertado y ante la ausencia tomo el valor generado por el Identity.
En la tercer sentencia Insert se ingresa un valor Null para la columna con Identity, esto produce un error dado a que el tipo Identity no permite Null.
El uso de la cláusula By Default en una columna Primary Key se puede utilizar, teniendo cuenta queno se inserte valores por una sentencia Insert, dado a que no puede haber valores repetidos, uno ingresado en la sentencia y otro producido por el Identity.

3)            Creación de una tabla con la cláusula By Default con restricción Not Null.
Esta definición en una columna, permite el uso de valores externos y generará valores para cuando se inserte un valor Null a una columna creada con la...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • INSTALACION ORACLE 12c
  • Recreando consola oracle database 11g
  • Oracle database
  • Oracle database
  • Oracle Database
  • Oracle Database
  • Comparacion Oracle database vs MariaDb vs SqlServer
  • Como Instalar Oracle Database Express Editions 11g

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS