como bloquear sequencias
DECLARE
id INTEGER ;
oidseq integer;
BEGIN
select c.oid::integer
into oidseq
from pg_class c
where relname = secuencia;
perform pg_advisory_lock(oidseq);
select into id nextval(secuencia);
execute 'ALTER SEQUENCE ' || secuencia || ' RESTART ' || (id + cantidad)::text;
perform pg_advisory_unlock(oidseq);
return id;
end;
Nota:
* Tiene que estar creado el lenguage plpgsql: create language plpgsql
* Tener en cuenta que el usuario que largue la funcion almacenada tiene que ser ownere de la sequencia
* Probar procedimiento: select get_rango_id_tabla('"boleta_id_seq"',1);
------------------------------------------------------------------
referencia:
http://www.depesz.com/index.php/2008/03/20/getting-multiple-values-from-sequences/
------------------------------------------------------------------
martes, 28 de octubre de 2008
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario