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 4: No hagas 'kill -9' a postmaster
