¿Las funciones y disparadores se interrumpen de raíz si se cae la BD a la mitad de la ejecución?
Publicado por Martín (8 intervenciones) el 07/09/2020 21:02:37
Tomemos el siguiente ejemplo:
Mi programa realiza un insert en una tabla de la base de datos (llamémosle tabla 1) y al momento de hacerlo, un Trigger en el postgresql realiza una función de insertar esos datos en otras dos tablas (llamémosle tabla 2 y tabla 3). Ahora , desde el momento que yo hago el insert en la tabla 1, hasta que se ejecuta el trigger y se hacen las inserciones de los datos automáticamente en las tabla 2 y 3, puede suceder que inesperadamente se me caiga la conexión a la base de datos. Entonces mi duda sería si ya viene predeterminado que el postgresql corte toda esa secuencia de acciones desde el principio (es decir, que vuelva todo para atrás y no haga ni el primer insert a la tabla 1), que se corte antes del trigger (que sólo realize la insersión a la tabla 1) o que corte las acciones a partir del momento en que se quedó la conexión (por ejemplo si se cae cuando va a empezar el insert en la tabla 3, las inserciones en la tabla 1 y 2 quedan registradas). Mi pregunta es esa porque me estoy adentrando en el terreno de las transacciones y los rollback, y no sabría si tendría que usarlos en el caso que haya triggers y funciones en general. Espero haber sido lo bastante claro, agradecería mucho si alguien me pudiera responder a esto.
Mi programa realiza un insert en una tabla de la base de datos (llamémosle tabla 1) y al momento de hacerlo, un Trigger en el postgresql realiza una función de insertar esos datos en otras dos tablas (llamémosle tabla 2 y tabla 3). Ahora , desde el momento que yo hago el insert en la tabla 1, hasta que se ejecuta el trigger y se hacen las inserciones de los datos automáticamente en las tabla 2 y 3, puede suceder que inesperadamente se me caiga la conexión a la base de datos. Entonces mi duda sería si ya viene predeterminado que el postgresql corte toda esa secuencia de acciones desde el principio (es decir, que vuelva todo para atrás y no haga ni el primer insert a la tabla 1), que se corte antes del trigger (que sólo realize la insersión a la tabla 1) o que corte las acciones a partir del momento en que se quedó la conexión (por ejemplo si se cae cuando va a empezar el insert en la tabla 3, las inserciones en la tabla 1 y 2 quedan registradas). Mi pregunta es esa porque me estoy adentrando en el terreno de las transacciones y los rollback, y no sabría si tendría que usarlos en el caso que haya triggers y funciones en general. Espero haber sido lo bastante claro, agradecería mucho si alguien me pudiera responder a esto.
Valora esta pregunta
0