Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Transactions dentro de triggers

Estas en el tema de Transactions dentro de triggers en el foro de PostgreSQL en Foros del Web. Buenas gente... Por primera vez estoy usando transacciones con la idea de que "se ejecute todo, o no se ejecute nada"... Y lo estoy queriendo ...
  #1 (permalink)  
Antiguo 13/04/2009, 16:39
Avatar de [NiRVaNa]  
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 20 años
Puntos: 6
Pregunta Transactions dentro de triggers

Buenas gente...

Por primera vez estoy usando transacciones con la idea de que "se ejecute todo, o no se ejecute nada"... Y lo estoy queriendo implementar en un trigger que hace multiples inserts a diferentes tablas...

El tema es que no lo puedo hacer, a lo mejor es por un malentendido de conceptos o porque algo estoy haciendo mal.

Mi codigo es algo asi:
Código:
CREATE OR REPLACE FUNCTION asinarPersona()
  RETURNS "trigger" AS
$BODY$

BEGIN

IF (TG_OP = 'INSERT') THEN
     BEGIN; --Empiezo la transaccion
/*
MULTIPLES INSERTS
*/
COMMIT;
END IF;

return new ;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
El tema es que cuando quiero ejecutar el script, me sale que tngo un error de sintaxis en "BEGIN;", cuando comento esa linea, ejecuta sin problemas, pero al momento de invocar al trigger se produce un error por el "COMMIT;"

Alguna idea o sugerencia?

Muchas gracias...
__________________
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
  #2 (permalink)  
Antiguo 13/04/2009, 18:56
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Transactions dentro de triggers

Creo que no es posible incluir una transacción dentro de una función.


Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 14/04/2009, 07:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 15 años, 8 meses
Puntos: 27
Respuesta: Transactions dentro de triggers

Al ejecutar una funcion implicitamente estas ejecutando una transacción a menos que la hayas abierto antes de llamar a la función.
  #4 (permalink)  
Antiguo 14/04/2009, 13:13
Avatar de [NiRVaNa]  
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 20 años
Puntos: 6
Pregunta Respuesta: Transactions dentro de triggers

Cita:
Iniciado por refreegrata Ver Mensaje
Al ejecutar una funcion implicitamente estas ejecutando una transacción a menos que la hayas abierto antes de llamar a la función.
Ya me parecia que algo asi era, lo que me interesa saber es si continua con la escencia de las transacciones... Es decir, si se ejecuta todo o no se ejecuta nada...

Saludos.
__________________
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
  #5 (permalink)  
Antiguo 14/04/2009, 13:40
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Transactions dentro de triggers

Cita:
lo que me interesa saber es si continua con la escencia de las transacciones...
Parece que sí.

Acabo de ejecutar un procedimiento que me inserta 2 millones de registros.
Mientras se insertaban los registros, paré el servicio de postgres. El procedimiento se detuvo inmediatamente avisándome la falta de conexión con el servidor. Cuando lo levanté nuevamente y revisé la tabla involucrada, no tenía registros.

Según la prueba, o se ejecuta todo, o no se ejecuta nada.

Espero te sirva.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 14/04/2009, 13:45
Avatar de [NiRVaNa]  
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 20 años
Puntos: 6
Respuesta: Transactions dentro de triggers

Muchas Gracias por la ayuda... Era un error de concepto entonces lo mio...

Saludos.
__________________
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:59.