2010/3/13 noXat <lista-postg...@3f22.com>: > > Dada esta estructura tengo una función que crea cada un intervalo de tiempo > un registro en la tabla padre. Dentro de este intervalo se tiene que poder > crear múltiples registros dentro de la tabla hija con la la fk de la tabla > padre desde afuera de la función. > El problema es que mientras está ejecutándose la función que crea la tabla > padre no puedo ver los datos que han sido creados por la función ya que no > ha terminado. > Se que no se puede hacer un commit dentro de una función. > > ¿Existe alguna manera que se puedan materializar los cambios realizados > (Entiéndase el INSERT INTO) antes que termine la función y que si termina no > se haga un rollback? >
Segun entendi tienes una funcion que se ejecuta indefinidamente, cada 60 segundos inserta un registro en una tabla padre y luego duerme hasta que dentro de 60s vuelve a insertar un registro en la tabla padre... mientras tanto un proceso X externo a la funcion trata de crear registros en base a los registros padres que estas creando... antes que nada parece un diseño bastante malo, porque haces esto? en todo caso en lugar de tener una funcion (es decir, una sola transaccion larguisima cuyos cambios NO vas a ver hasta que la funcion termine) que duerma 60 segundos crea una funcion que haga el insert y pon la en un cron para que se ejecute cada minuto o si quieres mantener la idea de la funcion usa dblink para desde la funcion crear una nueva conexion a la base de datos (seria algo como una transaccion autonoma) -- Atentamente, Jaime Casanova Soporte y capacitación de PostgreSQL Asesoría y desarrollo de sistemas Guayaquil - Ecuador Cel. +59387171157 -- TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podr� leerlo