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. SintaxisLa 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. EjemploSupongamos que tenemos una tabla con la siguiente estructura: Tabla USER_TABLE
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
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 es 15 porque es el siguiente valor después de 10.
|