Creación de sentencias:
CREATE SEQUENCE nombre_de_la_secuencia
MINVALUE valor
MAXVALUE value
START WITH valor
INCREMENT BY valor
CACHE valor;
Minvalue = valor míninimo de la secuencia
Maxvalue = valro máximo de la scuencia. Si no se especifica el valor sera de 999999999999999999999999999
START WITH = valor por el que se va a comenzar
INCREMENT BY = por cuanto se incrementará el contador en cada llamada
CACHE = número de valores que se almacenarán en memoria, a modo de cache para aumentar el rendimiento
ej de creación
CREATE SEQUENCE personas_id
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 20;
Para usarlos se realiza la llamada nombre_de_la_secuencia.NextVal
Ejemplos:
- Numeración automática en una consulta
Select nombre_de_la_secuencia.NextVal, nombre, apellidos from t_persona
- Inserción
insert into t_personas_atendidas values (id , nombre) VALUES (nombre_de_la_secuencia.NextVal, 'Pollo Polea')
Para simular la autonumeración en la inserción en una tabla podemos crear un trigger:
create or replace trigger trg_autonumeroSi tuviesemos algun problema en la compilación del trigger podemos ver los errores con:
before insert on t_personas_atendidas
for each row
begin
if :new.id is null then
select nombre_de_la_secuencia.NextVal into :new.id from dual;
end if;
end;
/
show errors trg_autonumero
Este trigger sirve para insertar registros usando el autonumérico con algunas particularidades:
a)
Insert into t_personas_atendidas values (nombre) VALUES ("Pollo Polea");
Se inserta el registro, y se llama al autonumérico
b)
Insert into t_personas_atendidas values ( id, nombre) VALUES (12, "Pollo Polea");
Se inserta el registro usando el valor 12, no se usa en este caso el autonumérico.
No hay comentarios:
Publicar un comentario