Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Saber si otra tabla esta en edit o insert (https://www.clubdelphi.com/foros/showthread.php?t=86501)

José Luis Garcí 22-08-2014 08:51:51

Saber si otra tabla esta en edit o insert
 
Hola compañeros, las cuestiones son las siguiente:

1º)Existe alguna manera de saber si antes de hacer un commitretaining, saber si tenemos otra tabla en edición o inserción, aparte de la que estemos en ese momento

2º)Si cancelo, un trabajo, que este no se grabe pero los que pueda hacer por medio si

Pienso en que puedo usar una variable general boleana, cuando exista una tabla en edición ponerla en true y otra variable general integer con el número de tablas en insert/append o edit y sólo hacer un commitretaining si la última variable es 0, pero me crea la duda y si una de las tablas la he cancelado.

Como siempre gracias por vuestra ayuda.

Casimiro Notevi 22-08-2014 09:34:35

Creo que no entiendo bien lo que preguntas. Cada transacción es independiente de las demás, no sabe nada de las otras transacciones. Si cancelas una transacción, las demás seguirán haciendo lo que tengan que hacer (lo que tú les digas que haga), independientes unas de otras.

José Luis Garcí 22-08-2014 16:09:42

Gracias Antonio, me extiendo un poco más.

El caso es el siguiente, estamos en la inserción de una nueva factura, pero uno de los artículos no esta dado de alto, si lo creo, teniendo aún la tabla factura y factura detalle, en edición o inserción, al crear el nuevo artículo y hacer un CommitRetaing, no afecta al estado de las tablas Factura y factura detalle?

Es lo que me deja dudando y me tiene inquieto.

Casimiro Notevi 22-08-2014 16:27:18

Bueno, no sé cómo lo haces, pero si creas un artículo, esto no tiene forma de afectar a la otra transacción.
Independientemente de la transacción donde se ejecuta el "insert" o "edit" de la factura, creas un artículo, se supone que está en otra transacción porque abrirás un formulario de artículos con su dataset asociado a la base de datos, y la transacción será otra distinta.
Creo entender que es eso lo que preguntas.

José Luis Garcí 22-08-2014 17:43:30

Me queda claro Antonio, gracias

Casimiro Notevi 22-08-2014 17:56:25

Para que lo tengas un poco más claro, si es posible, cada sentencia sql inicia su propia transacción, que es independiente a las de las otras sentencias. Y cada una ve el mundo (la BD) como estaba en el momento en que se inició ella. No sabe nada de las distintas visiones del mundo de las otras transacciones.
Todo esto es salvo que tú mismo ejecutaras un "starttransaction", que no acabaría nunca hasta que confirmaras o cancelaras la transaction (commit o rollback) y afectaría a todas las sentencias posteriores al "starttransaction".

José Luis Garcí 22-08-2014 21:45:52

Gracias, por la información.

Creía que al hacer un Commit, guardábamos todos los cambios echos hasta ese momento, de hay mi error.


La franja horaria es GMT +2. Ahora son las 01:56:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi