SEQUENCE y NEXTVAL




SQL > SQL Avanzado > SEQUENCE y NEXTVAL

Oracle utiliza el concepto de SEQUENCE para crear valores numéricos de clave primaria a medida que agregamos filas de datos a una tabla. Mientras que la población de claves primarias numéricas para MySQL y SQL Server está vinculada a tablas individuales, en Oracle la construcción SEQUENCE se crea por separado y no está vinculada a una tabla específica.

Sintaxis

La sintaxis para crear una secuencia en Oracle es la siguiente:

CREATE SEQUENCE SEQUENCE_NAME
[START WITH {Initial_Value}]
[INCREMENT BY {interval}];

{Initial_Value} es el valor inicial de la secuencia y {interval} es el intervalo entre números de secuencia consecutivos. Ambos [START WITH] y [INCREMENT BY] son campos opcionales. Si no se especifican, el valor predeterminado para {Initial_Value} y {interval} es 1.

Ejemplo

Supongamos que tenemos una tabla con la siguiente estructura:

Tabla USER_TABLE
 Nombre de Columna  Tip de Datos 
 Userid  integer 
 Last_Name  varchar(50) 
 First_Name  varchar(50) 

y queremos usar la siguiente secuencia para generar el userid:

CREATE SEQUENCE SEQ_USER START WITH 5 INCREMENT BY 5;

Especificamos que queremos usar la secuencia y la función NEXTVAL en las declaraciones INSERT INTO en el siguiente orden:

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Washington', 'George');

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Jefferson', 'Thomas');

Ahora la tabla tiene las siguientes dos filas:

Tabla USER_TABLE
 Userid  Last_Name  First_Name 
 5  Washington  George 
 10  Jefferson  Thomas 

Vale la pena señalar que una secuencia es independiente de una tabla. En otras palabras, una secuencia puede usarse para generar valores de clave primaria para múltiples tablas, y la secuencia continúa incluso si se aplica a una tabla diferente. Así que, digamos, por ejemplo, que tenemos una segunda tabla, Table NEW_USERS, que tiene la misma estructura que la tabla USER_TABLE, y emitimos el siguiente comando SQL después de ejecutar los dos comandos SQL anteriores:

INSERT INTO NEW_USER VALUES (SEQ_USER.NEXTVAL, 'Adams', 'John');

La tabla NEW_USER tendrá la siguiente fila:

Tabla NEW_USER
 Userid  Last_Name  First_Name 
 15  Adams  John 

Userid es 15 porque es el siguiente valor después de 10.

SQL Sintaxis >>

Esta página se actualizó por última vez el 26/12/2023



Copyright © 2024   1keydata.com   Todos los derechos reservados.