PDA

Ver la Versión Completa : Como usar transacciones


gario
15-12-2003, 22:29:58
Hola a todo el mundo

Estoy metido en un proyecto en red y estoy dudando entre usar transacciones en la bd y procedirmientos almacenados en la misma frente a las transacciones mediante los componentes ibx

por ejempo quisiera hacer un procedure en el que actualice un campo en una tabla en incremente un valor en otra al mismo tiempo... en la misma transacion quiero decir.
¿Como se implementaria eso en SQL para interbase?
¿Merece la pena hacerlo asi o complica mucho las cosas?

Gracias de antemano :)

jachguate
15-12-2003, 23:37:11
Creo que estas flaco en cuestiones de SQL, por lo que te recomiendo que leas un buen libro que te introduzca al tema.

Cualquier sentencia DML (Data Modification Languaje) (Select, update, insert, delete)que hagas en una base de datos relacional se ejecuta en el contexto de una transacción, ya sea dentro de un Stored Procedure o bien lanzando las sentencias desde tu aplicación delphi.

En interbase, incluso podes ejecutar sentencias DDL (Data Definition Languaje) (create, drop) en el contexto de una transacción!

Hasta luego.

;)

gario
16-12-2003, 18:14:50
De SQL se la sintxis y hacer todas las consultas que quieras... de mecanica interna trigers y procedures no controlo mucho... y repasando la ayuda del interbase me encuentro con un set transaction y pense que seria para algo de eso...
Entonces mi pregunta es mas sencilla... para que sirve eso del set transaction?
¿Todo el codigo de un procedure se ejecuta dentro de una transaccion (por lo cual se cumple la propiedad de la atomicidad)?

Gracias again

jachguate
17-12-2003, 20:52:29
Por supuesto que todo el código de un Stored Procedure (SP) se ejecuta en el contexto de una transacción... pero no solo eso, una llamada a un SP puede ser parte de una transacción mas grande, que a su vez haga inserts, updates, deletes y llamadas a otros SP's, además de Selects.

La transacción inicia por defecto con la primera instrucción que se ejecuta (no es necesario iniciarla explicitamente) y termina con commit o rollback.

Desde delphi, si usas BDE, este hace commit despues de cada instrucción que lanza a la base de datos, a menos que inicies explicitamente una transacción (lo que a mi me parece una deficiencia), pero es el BDE. Con ibx creo que podes configurarlo para que sea tambien autocommit.

Hasta luego.

;)