Como podría optimizar y mejorar esta función?

Soy nuevo en postgre y realmente me esta costando esto, por donde puedo ver?

Que cambios les harías y porque crees q tengo el error y como lo corregirías?

Ignacio

El Apr 6, 2010, a las 18:27, Alvaro Herrera <[email protected]> escribió:

Ignacio Balcarce escribió:

BEGIN
               IF (SELECT max(seq_id) FROM thuban_seq
WHERE seq_id LIKE (to_char(now() + '1 day'::interval,
'YYYYMMDD') || '%')) IS NOT NULL

                              THEN
                                              SELECT max(seq_id) INTO
item_id
                                              FROM thuban_seq
                                              WHERE seq_id LIKE
(to_char(now() + '1 day'::interval, 'YYYYMMDD') || '%');

id := substr(item_id, 9,
length(item_id)-9)::INT8;

               ELSE
                                              id:= 00000000;
               END IF;

  INSERT INTO thuban_seq(seq_id) VALUES (to_char(now(),'YYYYMMDD') ||
(id+1)) RETURNING seq_id INTO item_id;


Espero que tengas algún lock externamente a la ejecución de esta
función, porque así como está es sujeto de condiciones de carrera.

--
Alvaro Herrera                 http://www.amazon.com/gp/registry/DXLWNGRJD34J
"I'm always right, but sometimes I'm more right than other times."
                                                 (Linus Torvalds)
--
TIP 5: �Has le�do nuestro extenso FAQ?
        http://www.postgresql.org/docs/faqs.FAQ.html

Responder a