Transacciones

02/02/2008 - 01:01 por Omar | Informe spam
Hola que tal, solo una pregunta:

Es necesario o recomendable para efectos de integridad encapsular una
solo una sentencia INSERT, UPDATE o DELETE

o solo en necesario poner transacciones cuando se usen 2 o mas
sentencias de este tipo.

Gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
02/02/2008 - 01:34 | Informe spam
Omar,

Cuando la transaccion incluye mas una sentencia DML.

Toda sentencia DML es atomica, o todo o nada, por eso no es necesario crear
una transaccion explicita cuando la transaccion incluye una unica sentencia
DML.


AMB


"Omar" wrote:

Hola que tal, solo una pregunta:

Es necesario o recomendable para efectos de integridad encapsular una
solo una sentencia INSERT, UPDATE o DELETE

o solo en necesario poner transacciones cuando se usen 2 o mas
sentencias de este tipo.

Gracias.

Respuesta Responder a este mensaje
#2 Omar
02/02/2008 - 01:51 | Informe spam
Ok, entendido.

Entonces ahora tengo otra pregunta

Cuando tengo 2 intrucciones DML en un IF,una esta dentro del IF y la
otra dentro del ELSE, aqui si es necesario poner una transaccin o no?

Otra pregunta, tengo un SP que utiliza un cursor (yo se que no es
recomendable usar cursores pero en este caso no habia de otra mas que
usarlo), volviendo a la pregunta aqui si es recomendable usar una
transaccion que englobe al cursor?

Gracias.



Alejandro Mesa escribió:
Omar,

Cuando la transaccion incluye mas una sentencia DML.

Toda sentencia DML es atomica, o todo o nada, por eso no es necesario crear
una transaccion explicita cuando la transaccion incluye una unica sentencia
DML.


AMB


"Omar" wrote:

Hola que tal, solo una pregunta:

Es necesario o recomendable para efectos de integridad encapsular una
solo una sentencia INSERT, UPDATE o DELETE

o solo en necesario poner transacciones cuando se usen 2 o mas
sentencias de este tipo.

Gracias.

Respuesta Responder a este mensaje
#3 Alejandro Mesa
02/02/2008 - 02:46 | Informe spam
Omar,

Cuando tengo 2 intrucciones DML en un IF,una esta dentro del IF y la
otra dentro del ELSE, aqui si es necesario poner una transaccin o no?



No

Solo una de ellas se ejecutara.

Otra pregunta, tengo un SP que utiliza un cursor (yo se que no es
recomendable usar cursores pero en este caso no habia de otra mas que
usarlo), volviendo a la pregunta aqui si es recomendable usar una
transaccion que englobe al cursor?



Depende de lo que estes haciendo dentro de el cursor.

Para que tengas una mejor idea, piensa como se debe manejar una transaccion
en un banco, si sacas un monto de dinero de tu cuenta de ahorros y lo pones
en tu cuenta de cheques. La transaccion como un todo (saca de una cuenta y
pon el dinero en la otra) incluye mas de una accion, pero el conjunto de las
acciones debe tomarse como una transaccion, o falla y no afecta ninguna de
las cuentas o se completa y actualiza ambas cuentas. La extraccion es una
sentencia DML y el deposito en la de cheques es otra DML, asi que para que
ambas DML se tomen como un todo, estas deben encerrance en una transaccion.

begin transaction

- sacar la plata de la cuenta de ahorros
- depositar la plata en la cta de cheques

commit transaction

Si vas a hacer solo un deposito, o solo vas a extraer dinero para llevar
encima, entonces la transaccion incluye solo una accion y como cada sentencia
DML es atomica, osea SQL Server hace commit de esta si no falla o hace
rollback si falla.


AMB

"Omar" wrote:

Ok, entendido.

Entonces ahora tengo otra pregunta

Cuando tengo 2 intrucciones DML en un IF,una esta dentro del IF y la
otra dentro del ELSE, aqui si es necesario poner una transaccin o no?

Otra pregunta, tengo un SP que utiliza un cursor (yo se que no es
recomendable usar cursores pero en este caso no habia de otra mas que
usarlo), volviendo a la pregunta aqui si es recomendable usar una
transaccion que englobe al cursor?

Gracias.



Alejandro Mesa escribió:
> Omar,
>
> Cuando la transaccion incluye mas una sentencia DML.
>
> Toda sentencia DML es atomica, o todo o nada, por eso no es necesario crear
> una transaccion explicita cuando la transaccion incluye una unica sentencia
> DML.
>
>
> AMB
>
>
> "Omar" wrote:
>
>> Hola que tal, solo una pregunta:
>>
>> Es necesario o recomendable para efectos de integridad encapsular una
>> solo una sentencia INSERT, UPDATE o DELETE
>>
>> o solo en necesario poner transacciones cuando se usen 2 o mas
>> sentencias de este tipo.
>>
>> Gracias.
>>

Respuesta Responder a este mensaje
#4 Ricardo Passians
02/02/2008 - 05:01 | Informe spam
Si como dices es una sola sentencia elemental como las que citas, no es
necesario. Pero en este caso lo que abunda no daña. Yo tengo por norma
siempre encapsular en una transacción todo lo que envuelva actualizaciones.
De hecho lo hacen mis aplicaciones automáticamente sin importar cuántas
instrucciones de actualización se posteen en un batch.

Ricardo Passians


"Omar" escribió en el mensaje
news:u1FLo%
Hola que tal, solo una pregunta:

Es necesario o recomendable para efectos de integridad encapsular una solo
una sentencia INSERT, UPDATE o DELETE

o solo en necesario poner transacciones cuando se usen 2 o mas sentencias
de este tipo.

Gracias.
Respuesta Responder a este mensaje
#5 Oasis
02/02/2008 - 06:34 | Informe spam
Muchas gracias por aclarar mis dudas respecto a lo de transacciones,
pero ahora tengo otra, es recomendable regresar valores en un parámtro
de salida de un procedimiento almacenado? no se regresarian muchos
datos, a lo mas tres valores por SP

Gracias y ojalá no sean muchas preguntas y perdón por la ignorancia,
pero me interesa mucho lo referente a la integridad de los datos y el
performance de mis consultas, de hecho si me pudieran pasar algún texto
de referencia al respecto se los agradecería mucho.

Muchas gracias.

Alejandro Mesa escribió:
Omar,

Cuando tengo 2 intrucciones DML en un IF,una esta dentro del IF y la
otra dentro del ELSE, aqui si es necesario poner una transaccin o no?



No

Solo una de ellas se ejecutara.

Otra pregunta, tengo un SP que utiliza un cursor (yo se que no es
recomendable usar cursores pero en este caso no habia de otra mas que
usarlo), volviendo a la pregunta aqui si es recomendable usar una
transaccion que englobe al cursor?



Depende de lo que estes haciendo dentro de el cursor.

Para que tengas una mejor idea, piensa como se debe manejar una transaccion
en un banco, si sacas un monto de dinero de tu cuenta de ahorros y lo pones
en tu cuenta de cheques. La transaccion como un todo (saca de una cuenta y
pon el dinero en la otra) incluye mas de una accion, pero el conjunto de las
acciones debe tomarse como una transaccion, o falla y no afecta ninguna de
las cuentas o se completa y actualiza ambas cuentas. La extraccion es una
sentencia DML y el deposito en la de cheques es otra DML, asi que para que
ambas DML se tomen como un todo, estas deben encerrance en una transaccion.

begin transaction

- sacar la plata de la cuenta de ahorros
- depositar la plata en la cta de cheques

commit transaction

Si vas a hacer solo un deposito, o solo vas a extraer dinero para llevar
encima, entonces la transaccion incluye solo una accion y como cada sentencia
DML es atomica, osea SQL Server hace commit de esta si no falla o hace
rollback si falla.


AMB

"Omar" wrote:

Ok, entendido.

Entonces ahora tengo otra pregunta

Cuando tengo 2 intrucciones DML en un IF,una esta dentro del IF y la
otra dentro del ELSE, aqui si es necesario poner una transaccin o no?

Otra pregunta, tengo un SP que utiliza un cursor (yo se que no es
recomendable usar cursores pero en este caso no habia de otra mas que
usarlo), volviendo a la pregunta aqui si es recomendable usar una
transaccion que englobe al cursor?

Gracias.



Alejandro Mesa escribió:
Omar,

Cuando la transaccion incluye mas una sentencia DML.

Toda sentencia DML es atomica, o todo o nada, por eso no es necesario crear
una transaccion explicita cuando la transaccion incluye una unica sentencia
DML.


AMB


"Omar" wrote:

Hola que tal, solo una pregunta:

Es necesario o recomendable para efectos de integridad encapsular una
solo una sentencia INSERT, UPDATE o DELETE

o solo en necesario poner transacciones cuando se usen 2 o mas
sentencias de este tipo.

Gracias.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida