Secuencia En Sql

Páginas: 20 (4931 palabras) Publicado: 14 de octubre de 2012
ORACLE proporciona los objetos de secuencia para la generación de códigos numericos automáticos.
Las secuencias son una solución fácil y elegante al problema de los codigos autogenerados.
LA sintaxis general es la siguiente:

CREATE SEQUENCE <secuence_name>
[MINVALUE <min_val>]
[MAXVALUE <max_val>]
[START WITH <ini_val>]
[INCREMENT BY<inc_val>]
[NOCACHE | CACHE <cache_val>]
[CYCLE]
[ORDER]; |
El siguiente ejemplo crea una secuencia SQ_PRODUCTOS.

CREATE SEQUENCE SQ_PRODUCTOS
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20; |
Se puede simplificar la orden, tomando los valores por defecto. El ejemplo anterior quedaría del siguiente modo:CREATE SEQUENCE SQ_PRODUCTOS; |
Para obtener el siguiente valor de una secuencia debemos utilizar la función NEXTVAL. NEXTVAL se puede utilizar el cualquier sentencia SQL DML (SELECT, INSERT, UPDATE).

SELECT SQ_PRODUCTOS.NEXTVAL
FROM DUAL; |
Podemos obtener el último valor generado por la secuencia con la función CURRVAL. Para poder ejecutar la función CURRVAL debemos haberejecutado previamente la función NEXTVAL.

SELECT SQ_PRODUCTOS.CURRVAL
FROM DUAL; |
Para eliminar una secuencia definitivamente de la base de datos debemos utilizar la sentencia DROP.

DROP SEQUENCE SQ_PRODUCTOS ; |
5555555
35 - Secuencias (create sequence - currval - nextval - drop sequence) | |

|
Hemos aprendido que existen varios objetos de basede datos, hasta ahora hemos visto TABLAS y algunas FUNCIONES predefinidas. Otro objeto de base de datos es la secuencia.
Una secuencia (sequence) se emplea para generar valores enteros secuenciales únicos y asignárselos a campos numéricos; se utilizan generalmente para las claves primarias de las tablas garantizando que sus valores no se repitan.
Una secuencia es una tabla con un campo numéricoen el cual se almacena un valor y cada vez que se consulta, se incrementa tal valor para la próxima consulta.
Sintaxis general:
create sequence NOMBRESECUENCIA
start with VALORENTERO
increment by VALORENTERO
maxvalue VALORENTERO
minvalue VALORENTERO
cycle | nocycle;
- La cláusula"start with" indica el valor desde el cual comenzará la generación de números secuenciales. Si no se especifica, se inicia con el valor que indique "minvalue".
- La cláusula "increment by" especifica el incremento, es decir, la diferencia entre los números de la secuencia; debe ser un valor numérico entero positivo o negativo diferente de 0. Si no se indica, por defecto es 1.
- "maxvalue" define elvalor máximo para la secuencia. Si se omite, por defecto es 99999999999999999999999999.
- "minvalue" establece el valor mínimo de la secuencia. Si se omite será 1.
- La cláusula "cycle" indica que, cuando la secuencia llegue a máximo valor (valor de "maxvalue") se reinicie, comenzando con el mínimo valor ("minvalue") nuevamente, es decir, la secuencia vuelve a utilizar los números. Si se omite,por defecto la secuencia se crea "nocycle".
Si no se especifica ninguna cláusula, excepto el nombre de la secuencia, por defecto, comenzará en 1, se incrementará en 1, el mínimo valor será 1, el máximo será 999999999999999999999999999 y "nocycle".
En el siguiente ejemplo creamos una secuencia llamada "sec_codigolibros", estableciendo que comience en 1, sus valores estén entre 1 y 99999 y seincrementen en 1, por defecto, será "nocycle":
create sequence sec_codigolibros
start with 1
increment by 1
maxvalue 99999
minvalue 1;
Si bien, las secuencias son independientes de las tablas, se utilizarán generalmente para una tabla específica, por lo tanto, es conveniente darle un nombre que referencie...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Que es sql
  • que es sql
  • SQL
  • Sql
  • Secuencias
  • Secuencia
  • Secuencia
  • secuencia

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS