Power Builder - Update en una sola transaccion

 
Vista:
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Update en una sola transaccion

Publicado por Antonio (1271 intervenciones) el 18/02/2014 21:30:10
Hola todos:

antes que nada un gran saludo...

Le pido su apoyo para lo siguiente:

Resulta que tengo que insertar unos registro en varias tablas y al mismo tiempo actualizar otras tablas, pero me dijeron que lo hiciera en una sola transacción.. esto debido a que debemos tomar en cuenta que si hay corte dentro de la red y no se puedan grabar o actualizar ciertas tablas (creo que este problema es común ya que una red puede ser inestable por corte de energía eléctrica o de plano la red anda mal).

Por consiguiente, si yo hago un commit o rollback a una tabla esta afecta directamente en guardar o revocar esa grabación o actualización de tablas, y luego se tendría que rastrear registro por registro para saber donde si se guardo y donde no se guardo o actualizó.

Me indican que al hacer en una solo transacción y en caso de ocurrir este fallo no se guardaría ni actualizaría ningún dato y esto es bueno porque no tendríamos que perder tiempo en rastreos.

¿Alguien sabe como hacer en una sola transacción o donde hay documentación para realizar este proceso en una sola transacción?

Gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Update en una sola transaccion

Publicado por Leopoldo Taylhardat (710 intervenciones) el 19/02/2014 00:05:55
Saludos...

Eso lo debes hacer con un trigger de la tabla en la base de datos...
por ejemplo si registras una factura actualizas el saldo de un cliente y registras la auditoríaa de la factura, etc....

Si el sistema falla todo se reversa... si no falla por supuesto todo se actualiza...

De acuerdo a la bd que uses, el trigger se programa de diferente forma (de acuerdo al "dialecto" o extension del sql de la bd)

En el foro de Sybase Adaptive Server Anywhere hay un ejemplo de trigger de como realizar el registro de auditoría...
lo puedes ver para que aprendas un poco sobre TRIGGERS y lo uses de guía....
Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Update en una sola transaccion

Publicado por Jeinnerh (646 intervenciones) el 19/02/2014 00:33:38
Una sóla transacción significa que abres un BeginTransaction y al final de la transacción un EndTransaction

Depende de la base de datos que estás utilizando el comando para abrir una transacción.

Si se trata de una sóla base de datos y se actualizan varias tablas es perfectamente factible realizarlo por medio del programa, sin necesidad de acudir directamente a procesos de base de datos.

Revisa la ayuda de powerbuilder con la función: BeginTransaction( )

Yo he utilizado código para abrir una transacción, pero no tengo a mano un ejemplo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Update en una sola transaccion

Publicado por antonio (1271 intervenciones) el 19/02/2014 01:15:21
Gracias a los dos...

Se ve la opción mas viable es la de Jeinnerh , claro sin hacer de menos a Leopoldo....

La base de datos que uso es SQL SERVER 2008.

Es posible hacerlo ahí Jeinnerh ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Update en una sola transaccion

Publicado por JeinnerH (646 intervenciones) el 19/02/2014 15:27:31
No encuentro el código donde lo uso, pero buscando en Internet encuentro este código de Sybase:

EXCECUTE INMEDIATE "BEGIN TRANS T1" USING SQLCA;
Update table1 ...

Update table2 ...

EXCECUTE INMEDIATE "COMMIT TRANS T1" USING SQLCA;


http://msdn.microsoft.com/es-es/library/ms188929.aspx

Deberás hacer varias pruebas a ver si era así como funcionaba.

También hay que revisar si funciona de forma adecuada cuando el AutoCommit del objeto transacsacional está puesto en TRUE.

Busca en la ayuda del PB: Microsoft SQL Server Using CONNECT

La configuración del AutoCommit se realiza con el SQLCA.AutoCommit=True antes de establecer la conexión a la base de datos con el objeto transaccsacional. Lo que tendrías que ver es si hay que ponerlo en FALSE, para que funcione sin problemas el Begin Trans.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar