PostgreSQL e la funzione sleep

Può capitare che per alcune esigenze di simulazione occorra simulare un ritardo di esecuzione oppure come nel mio caso,facendo una serie di inserimenti dietro l'altro nei quali la chiave primaria è la funzione now(),ci ritroviamo con dei bei errori perchè la funzione now() viene richiamata talmente velocemente da ritornare il medesimo risultatoi per un buon numero di statement.
In questa pagina vien emostrato come costruire una funzione plpgsql che simuli una sleep tramite un ciclo oppure usare la sleep di PERL avendo questo linguaggio a bordo e avendo caricato la libreria con CREATE LANGUAGE.

create or replace function sleep (numeric) returns time as '
declare
seconds alias for $1;
later time;
thetime time;
begin
thetime := timeofday()::timestamp;
later := thetime + (seconds::text || '' seconds'')::interval;
loop
if thetime >= later then
exit;
else
thetime := timeofday()::timestamp;
end if;
end loop;

return null;
end;
' language plpgsql;


0 comments:

Byte Strike Blog - Designed by Posicionamiento Web | Bloggerized by GosuBlogger