From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Ivan Arcos Carballo <hiban8(at)hotmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Potgre y transacciones |
Date: | 2006-11-14 11:46:38 |
Message-ID: | 20061114114638.GA27380@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Ivan Arcos Carballo escribió:
> Me han contestado que PostGre no admite transacciones anidadas. Mi pregunta
> es: ¿las admite MySQL? ¿alguien me puede indicar como usar los SAVEPOINTS
> en C#?.No admite postgre transacciones anidadas pero, si creo un ámbito de
> transacción con transactionScope y dentro del ambito creo un par de
> conexiones y realizo tareas de las que quiero hacer un rollback de todas
> ellas en caso de excepción ¿me lo permite?Gracias
Lo de usar múltiples conexiones no es muy buena idea, porque es muy
facil que ocurra un error y se aborte solo una, con lo cual te
encontraras con violacion de la integridad transaccional (atomicidad).
Lo que yo te sugiero es hacer algo asi como
BEGIN
insert ... (1)
update ... (2)
SAVEPOINT un_savepoint
insert ... (3)
update ... (4)
COMMIT
Si alguno de los comandos despues del savepoint falla, puedes hacer dos
cosas: un "ROLLBACK TO un_savepoint", en cuyo caso solo los comandos 3 y
4 son abortados, mientras que los comandos 1 y 2 siguen siendo validos;
es mas, puedes reintentar los comandos 3 y 4 (modificados de manera que
esta vez no incurran en el mismo error), y continuar.
Y lo otro que puedes hacer es ROLLBACK (sin la clausula "TO"), en cuyo
caso se abortan los cuatro comandos y quedas fuera del bloque de
transaccion.
MySQL, hasta donde yo se, no soporta savepoints ni transacciones
anidadas (hasta hace poco ni siquiera soportaba transacciones).
No tengo idea como usarlo en C#.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-11-14 11:52:55 | Re: Store Procedure con parametros variables |
Previous Message | Ivan Arcos Carballo | 2006-11-14 08:40:44 | Potgre y transacciones |