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