Re: Alguna forma de actualizar secuencias adentro de una funcion

From: Rusel Fichi <rdfs(dot)ing(at)gmail(dot)com>
To: Anthony Rafael Sotolongo León <asotolongo(at)uci(dot)cu>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Alguna forma de actualizar secuencias adentro de una funcion
Date: 2014-02-05 16:07:14
Message-ID: CAMiTfwKqe_H_4wLxhaAEAx-MM5VKK30g_50NPjBU_wqp7z_8LA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenos dias Estimados,

Probé las sequences manipulations functions y la que mas me sirvió fue la
de setval(regclass), logre crear una funccion que resolviera mi poroblema,
esta es la funcion que cree en caso que le sirva al alguien que presente
un problema parecido:

create or replace function update_sequences () returns boolean as $$
declare
var1 int;
begin
var1=(select id+1 from bdcriterio order by id desc limit 1);
PERFORM setval('bdcriterio_seq',var1);
return true;
end;
$$ language plpgsql;

Y asi la ejecuto:

select update_sequences();

Obtengo mi respectivo "true" diciendo que todo salio bien, tengo que
implementar esto a mas de 1600 secuencias para ello queria una funcion que
lo hiciera todo mas automatico.

Saludos y gracias por el apoyo!

El 4 de febrero de 2014, 11:25, Rusel Fichi <rdfs(dot)ing(at)gmail(dot)com> escribió:

> Gracias hermano! Las voy a probar
> El 03/02/2014 20:32, "Anthony Rafael Sotolongo León" <asotolongo(at)uci(dot)cu>
> escribió:
>
> Hola Rusel has visto las Sequence Manipulation Functions:
>>
>> currval(regclass), lastval(), nextval(regclass),setval(regclass,
>> bigint),setval(regclass, bigint,
>> boolean)
>>
>> saludos
>>
>> El 2/3/2014 12:45 PM, Rusel Fichi escribió:
>>
>> Buenos días Lista,
>>
>> Hay alguna forma de actualizar mis secuencias en la base de datos de
>> forma automática? Esto debido a que tuve una corrupción de datos lo cual
>> afecto que mis secuencias siguieran incrementándose de forma constante.
>>
>> Intento crear una funcion que lo haga:
>>
>> create or replace function update_sequences () returns boolean as $$
>> declare var1 int;
>> begin
>> var1=(select id from bdcriterio order by id desc limit 1);
>> alter sequence bdcriterio_seq restart with var1+1;
>> return true;
>> end;
>> $$ language plpgsql;
>>
>>
>> Tampoco me funciona de esta forma:
>>
>> alter sequence bdcriterio_seq restart with (select id from bdcriterio
>> order by id desc limit 1);
>>
>> No conozco otra manera de realizar esto ya que no soy muy bueno usando
>> el comando alter..
>>
>> Gracias de antemano para las personas que me puedan brindar ayuda!!
>>
>> Saludos
>>
>>
>>
>>
>> ------------------------------
>>
>> III Escuela Internacional de Invierno en la UCI del 17 al 28 de febrero
>> del 2014. Ver www.uci.cu
>>
>>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2014-02-05 16:09:39 Re: Milisegundos entre dos campos
Previous Message Alvaro Herrera 2014-02-05 15:50:21 Re: Milisegundos entre dos campos