Hola, lo que describes es justo una transacci�n. B�sicamente abre una transacci�n, luego ejecutas todas las sentencias de insert, update o delete que desees (ya sea con un SqlScript como te indica Maxi o en queries separadas enlazadas a la misma transacci�n) y cuando terminas cierras la transacci�n.
Todos los registros usados en la transacci�n no pueden ser usados (en la mayor�a de los casos, existen maneras seg�n el tipo de transacci�n) por otros usuarios, pero el due�o de la transacci�n puede modificar varias veces un mismo registro si as� lo desea.
Espero te sea de ayuda, un saludo y felices fiestas.
De: "SocGer" <socger en gmail.com>
Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Mi�rcoles, 23 de Diciembre 2015 23:31:10 Asunto: Re: [Lazarus-es] �Como conseguir hacer varias SQL juntas?
El d�a 22 de diciembre de 2015, 6:03, SocGer < socger en gmail.com > escribi�:
Show quoted text 19 lines
Buenas, uso los componentes TSQLQUery para hacer consultas, Insert o update.
Pero no consigo por ejemplo hacer varias cosas al mismo tiempo con estos
componentes. Por ejemplo un insert, despu�s un update y despues una select.
En Delphi 5 consegu�a hacerlo sin problemas mediante ODBC, pero deseo
hacerlo con los componentes TSQLQUery por la facilidad de cambiar de base de
datos sin modificar los componentes.
Adem�s tambi�n necesito crear funciones o procedimientos en la base de datos
en tiempo real desde estos componentes y no consigo tampoco hacerlo.
Tiene que ser posible seguro, pero igual no lo estoy haciendo bien. �Puede
alguien enviarme ejemplos o un link, que me aclare como conseguir hacer las
dos cosas que no consigo?. La de hacer varias consultas dentro de una misma
estructura SQL (Insert, update y select) y la de conseguir crear sobre la
base de datos un procedimiento o una funci�n.
Muchas gracias por vuestra labor de formaci�n y gracias de antemano por
vuestra ayuda.
***************************************************************************************** *****************************************************************************************
Gracias a todos, pero creo que me expliqu� a medias. Lo que nos comenta Maxi, es cierto
Para crear algo en la base lo haces con un query pero en vez de hacer
open, usas excecsql.
Y as� lo hago.
Pero imaginar que tengo que hacer un Insert en una tabla y luego despu�s un Update. Ok?
Pues si los dos los intento hacer dentro de un solo query y usando execSQL, me genera un error. Sin embargo si los hago por separado ... dos query, funciona perf�ctamente.
Pero no me interesa hacer dos query, porque otro usuario puede entrar al mismo tiempo (entre el Insert y el Update) y modificarme algo que no debe mientras estoy haciendo estos pasos. Es decir que tengo que entrar yo primero en el motor de base de datos hacer el Insert y el Update, y luego otro usuario si quiere despu�s de mi.
Por eso de hacerlo todo sobre una SQL y en un solo query.
Si alguien lo consigui�, me puede decir como. Por supuesto sin usar funciones sobre la Base de Datos ni procedimientos almacenados.
Saludos y gracias de antemano.