Ir al contenido principal

Columnas Identidad

En versiones previas a Oracle 12c, los valores de una columna clave primaria se generaban mediante una secuencia que produce un valor único y para que el proceso sea automático se requería adicionalmente de un disparador.  A partir de Oracle Database 12c se puede prescindir de las secuencias empleando columnas de identidad, una columna de identidad  genera un valor numérico secuencial y único al estilo de gestores como MySQL y PostgreSQL.

Para crear una columna de identidad se emplea la sintaxis básica siguiente:

             nombre_columna tipo GENERATED BY DEFAULT AS IDENTITY

El siguiente ejemplo crea la tabla Projects en el esquema HR:

   create table HR.Projects(
     project_id number(6)  GENERATED BY DEFAULT AS IDENTITY,
     project_name varchar2(60) not null,
     constraint Projects_PK Primary key( project_id)
   ); 

Probar la columna insertando datos y omitiendo la columna identidad porque esta genera su valor por defecto:

    insert into HR.Projects(project_name)
  values('Proyecto A1');

  insert into HR.Projects(project_name)
  values('Proyecto A2');

Consultar datos de Projects:

   select project_id,project_name
   from HR.Projects;


Como puede apreciarse en la imagen, la columan identidad genera automáticamente los valores secuenciales 1 y 2 para cada fila insertada. 

Para poder cambiar el valor inicial, establecer el  valor de incremento e indicar valores mínimo y máximo se puede aplicar la sintaxis siguiente:

  nombre_columna tipo GENERATED BY DEFAULT AS IDENTITY
             MINVALUE valor_mínimo
             MAXVALUE valor_máximo
             INCREMENT BY valor_incremento
             START WITH valor_inicial 
             NOORDER  NOCYCLE  NOT NULL ENABLE

Con el objetivo de probar la sintaxis descrita, se creará la tabla Project2 con las siguientes características para la columna Project_Id:
  •   Valor Mínimo:100
  •   Valor Máximo:99999999
  •   Incremento: 10
  •   Iniciar con:100

create table HR.Projects2(
     project_id number(6) GENERATED BY DEFAULT AS IDENTITY
                          MINVALUE 100
                          MAXVALUE 99999999
                          INCREMENT BY 10
                          START WITH 100,
     project_name varchar2(60) not null,
     constraint Projects_PK Primary key( project_id)
   ); 

Table HR.PROJECTS2 creado.

Insertar datos en la nueva tabla:

 insert into HR.Projects2(project_name)
 values('Proyecto A1A');

 insert into HR.Projects2(project_name)
 values('Proyecto A2A');


Consultar la tabla Projects2 para comprobar resultados:

 SELECT *
 FROM
PROJECTS2; 


  

Conclusión

Las columnas de identidad constituyen un mecanismo natural y ágil para generar valores únicos y secuenciales para los campos de clave primaria, evitando crear objetos extra como  secuencias y disparadores.

Hasta una próxima ocasión.

Saludos.

    
      

Comentarios

Entradas más populares de este blog

Crear y Administrar Espacios de Tablas(Tablespaces) Parte 1

Los Espacios de Tablas o Tablespaces permiten agrupar lógicamente los datafiles o archivos de datos donde se almacenan físicamente los datos de las tablas de usuarios y del sistema. Oracle en todas sus ediciones cuenta por defecto con 5 tablespaces: SYS SYSTEM UNDO TEMP USERS Cada espacio de tabla tiene una función definida que se muestra en la tabla siguiente: TABLESPACE DESCRIPCIÓN SYSTEM Almacena información acerca de los datos de la base de datos. SYSAUX "Es un tablespace que nace en 9i para dar soporte a los diferentes features de Oracle que necesitan crear segmentos dentro de la base de datos, por ejemplo AWR en 10g."  http://www.forosdelweb.com/f100/tablespace-sysaux-606358/ UNDO Sirve para retener los cambios que se realizan sobre los datos en Oracle y así poder deshacerlos. TEMP Contiene datos temporales o no permanentes  que permanecen únicamente por la duración de la sesión, es decir, que una vez que la sesión termina, estos datos son bo

Como conectarse a Oracle Database XE desde la línea de comandos.

Oracle Database XE puede ser accedida desde la aplicación SQL*Plus, que es un programa de líneas de comandos SQL. Para acceder a SQL*PLus, existen dos métodos: Primero: Inicio>Todos los programas>Base de datos Oracle 10g/11g  Express Edition>Ejecutar Línea de comandos SQL.                     En el caso de Oracle Database 18c Express Edition para Windows:  Inicio>Oracle-OraDB18Home1>SQLPlus Se visualiza la ventan de SQLPlus y se activa un promptuario SQL> que antecede a cualquier comando SQL. Para establecer la conexión al servidor Oracle, ingrese el comando: SQL> conn system (presione ENTER) Introduzca la contraseña: La contraseña es la establecida por Usted al momento de instalar Oracle.(A no ser que la haya cambiado). Presione Enter. Se visualizará el mensaje: Conectado .   A continuación se activa el prompter SQL> Ahora podemos enviar mandatos SQL al servidor XE. Para empezar, crearemos un nuevo usuario llamado MUSICAL. La

Crear usuarios, asignar y revocar roles en Oracle XE con SQL Developer

Es habitual crear y administrar usuarios y roles por medio de líneas de comando usando SQL PLUS, sin embargo muchos de estos procesos pueden  realizarse por medio de Oracle SQL Developer que es la herramienta gráfica desarrollada en Java para cubrir de modo visual las tareas mencionadas. Crear un usuario con Oracle SQL Developer 1.   Iniciar  Oracle SQL Developer 2. Abrir la conexión de usuario SYSTEM configurada para XEPDB1 o cualquier otra PDB disponible. Si no cuenta con una conexión basada en el usuario SYSTEM, ver el siguiente post . 3.   En el panel Conexión se desplegarán los nodos de la conexión abierta y seleccionar la carpeta Usuarios.   4.   Click con botón secundario y seleccionar Crear Usuario . 5.   Llenar los datos en el formulario Crear Usuario. 6.   Click en Roles Otorgados. Seleccionar CONNECT y RESOURCE .   7.   Seleccionar Cuotas. Seleccionar USERS y establecer 300 en la columna Cuota y M en Unidades. Opcional.- Click en S