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

rollback en funciones y procedimientos

Estas en el tema de rollback en funciones y procedimientos en el foro de PostgreSQL en Foros del Web. saludos amigos, recientemente lei en la web que el rollback ya viene implicito en funciones y procedimientos de postgres ¿que de cierto hay en esto?. ...
  #1 (permalink)  
Antiguo 19/03/2014, 21:31
 
Fecha de Ingreso: enero-2014
Mensajes: 100
Antigüedad: 10 años, 3 meses
Puntos: 0
Información rollback en funciones y procedimientos

saludos amigos, recientemente lei en la web que el rollback ya viene implicito en funciones y procedimientos de postgres ¿que de cierto hay en esto?. Entiendo que, un rollback es cuando ejecutamos en una transaccion una serie de sentencias y operaciones y que, si alguna de estas falla por algun motivo se ejecuta un rollback que no es otra cosa mas que el regresar la base de datos a su estado original, antes de que se hubiese ejecutado dicha transaccion. por ejemplo, yo en postgres manejo funciones y procedimientos de la siguiente manera:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION nueva_caja_chica(fecha_entrada DATE, porcentaje INTEGER, pct_caja_chica DOUBLE PRECISION, iddeposito INTEGER, clave CHARACTER)
  2.   RETURNS void AS
  3. $BODY$insert INTO concepto (fecha,pct_asignado,cantidad,id_deposito,id_clave)
  4.   VALUES(fecha_entrada,porcentaje,pct_caja_chica,iddeposito,clave);$BODY$
  5.   LANGUAGE SQL

y de esta otra:
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION obtener_info_conceptos(IN ids INTEGER, OUT out_pct_asignado INTEGER, OUT out_cantidad DOUBLE PRECISION, OUT out_id_clave CHARACTER)
  2.   RETURNS SETOF record AS
  3. $BODY$
  4. DECLARE
  5. datos record;  
  6.    BEGIN
  7.       FOR datos IN SELECT pct_asignado, cantidad, id_clave FROM concepto WHERE id_deposito=ids loop
  8.          out_pct_asignado=datos.pct_asignado;
  9.          out_cantidad=datos.cantidad;
  10.          out_id_clave=datos.id_clave;
  11.          RETURN NEXT;
  12.       END loop;
  13.       RETURN;
  14.    END;
  15.  $BODY$
  16.   LANGUAGE plpgsql
  17.  
  18. Mi pregunta es que, ¿si al ejecutar esto, ya tienen dichos ROLLBACK's de forma implicita o tengo yo que definirlos separadamente?
__________________
"Benditos sean todos los libros, pues cuando abres uno, te sumerges en un mundo nuevo y completamente diferente"
  #2 (permalink)  
Antiguo 20/03/2014, 07:30
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: rollback en funciones y procedimientos

Toda función o procedimiento en PostgreSQL tiene implicita una transacción. Si algo al interior de la función falla, se genera un rollback implicito de todo lo que va por dentro de la misma.
De igual forma pasa con el commit.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 20/03/2014, 20:01
 
Fecha de Ingreso: enero-2014
Mensajes: 100
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: rollback en funciones y procedimientos

ya veo, entonses entiendo que para este gestir de base de datos, postgres ya no es nesesario hacer de forma explicita los rollback entiendo jejejeje muchas gracias por tu ayuda.
__________________
"Benditos sean todos los libros, pues cuando abres uno, te sumerges en un mundo nuevo y completamente diferente"

Etiquetas: as, funciones, postgres, procedimientos, rollback
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 09:18.