![]() |
Pregunta sobre actualizar bases de datos
Hola a todos. ¿Es posible modificar una campo de una tabla perteneciente a una base de datos desde un trigger de otra base de datos?
Uso Firebird 1.5, delphi7 y dbexpress. |
Hola,
Directamente no. Una posible solución sería llamar a una UDF desde el trigger que, pasando los parámetros adecuados (base de datos a actualizar y, por ejemplo, sentencia UPDATE SQL a aplicar), se conectase a la segunda base de datos y actualizase la misma. Tendrías que utilizar dos transacciones diferentes, una en la que se está ejecutando el trigger, y otra para lanzar la sentencia UPDATE desde la UDF, pero, si la atomicidad de la operación no es vital, podría servir. Saludos. |
Hola Kinobi. Supongo que más fácil sería desde la aplicación delphi (con lo que ya no podría actualizar una modficación directa en la base de datos) poder obtener los cambios efectuados en una base de datos y aplicar esas sentencias sql a la otra base de datos.
¿Hay alguna forma de capturar las sentencias generadas por un datasetprovider? |
Hola,
Cita:
Cita:
Saludos. |
Ok kinobi.
Pero de la forma que tu me has comentado, ¿es posible actualizar varios registros y posteriormente commitarlos todos o cancelarlos todos? |
Cita:
Saludos. |
El problema es que yo en delphi abro una trasacción y dentro de ella hago todo el proceso sobre la base A (la que quiero modificar automáticamente es la B) de tal forma que en un momento dado, por ejemplo si falla el último applyupdates, puedo hacer rollback de todo lo realizado dentro de esa transacción. Sin embargo, si pongo la llamada de la udf en el trigger after insert, el único registro que no entrará será el que de el error, y el resto si quedarían actualizados en la base B; sin embargo en la empresa A todo se desharia.
¿alguna idea para este problema? |
Hola,
Cita:
En cuanto a la parte cliente, como te dije también en un mensaje anterior, desconozco si desde Delphi es posible hacerlo, supongo que dependerá del mecanismo de acceso que estés utilizando. Lo que sí puedo decirte es que el API InterBase permite que una transacción actúe contra varias bases de datos simultáneamente. Saludos. |
Gracias por tus respuestas. La verdad que creo que al final voy a hacerlo todo en la misma base de datos.
Ya sólo por curiosidad, ¿a qué te refieres con eso de que puede controlar una transacción sobre varias bases de datos? ¿algún sitio donde pueda recabar información sobre este tema? De nuevo. Muchas gracias. |
La franja horaria es GMT +2. Ahora son las 07:24:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi