Que tal amigos de postgrest!
Aqui estoy peleandome con las secuencias de postgrest, lo que quiero hacer es evitar que postgres "pierda" o "saltee" secuencias, por ejemplo me pasa que de la secuencia 2250 pasa a la 2259.

Estoy intentando modificar la secuencia y verificar que no ocurra dicho "salto" con ul procedimiento almacenado como este:
CREATE OR REPLACE FUNCTION lux.tri_bi_reclamos()
  RETURNS "trigger" AS
$BODY$
DECLARE
max_reclamo_id bigint not null;
icurrval bigint not null;
setvalreturn bigint not null;
BEGIN
  begin
    select max(reclamo_id) into max_reclamo_id
        from lux.reclamos;
        raise notice 'max_reclamo_id = %', max_reclamo_id;

    select currval('lux.reclamos_reclamo_id_seq') into icurrval;

    if (max_reclamo_id != icurrval) then
SELECT setval('lux.reclamos_reclamo_id_seq', max_reclamo_id + 1) into setvalreturn;
    end if;

    return new;
  exception
    when others then
      raise exception 'tri_bi_reclamos: (%)', SQLERRM;
  end;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

Pero los errores que da me pierden mas y ya no se que hacer.

Si alguien tubo un problema como este le agradeceria mucho me mostrara como hacer, porque estoy usando el campo serial para darle numero a reclamos, pero como saltea los numeros no esta sirviendo porque el cliente quiere que sean si o si consecutivos sin ningun "salto" en la serie.

Desde ya gracias a la comunidad por su tiempo.

Atte.
Nestor Rodriguez
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a