TRANSACCIONESEN TRANSACT SQL
Una transacción es un conjunto de operaciones Transact SQL que se ejecutan como un único
bloque,esdecir,si fallaunaoperación TransactSQL fallantodas.Si unatransaccióntiene éxito,
todas las modificaciones de los datos realizadas durante la transacción se confirman y se
conviertenenunaparte permanente de labase de datos.Si una transacciónencuentraerrores
y debe cancelarse o revertirse, se borran todas las modificaciones de los datos.
El ejemploclásicode transacciónesunatransferenciabancaria,enlaque quitamossaldoa una
cuentay loañadimosenotra. Si no somoscapaces de abonarel dineroenla cuentade destino,
no debemos quitarlo de la cuenta de origen.
SQL Serverfuncionapordefectocon Transaccionesdeconfirmaciónautomática, esdecir,cada
instrucción individual es una transacción y se confirma automáticamente.
Sobre el ejemploanteriorde latransferenciabancaria, unscriptdeberíarealizaralgoparecidoa
lo siguiente:
Esta formade actuar seriaerrónea,yaque cadainstrucciónse ejecutaríayconfirmaríade forma
independiente, por lo que un error dejaría los datos erróneos en la base de datos (¡yese es el
peor error que nos podemos encontrar!)
2.6.1 Transacciones implícitasy explicitas
Para agrupar variassentencias Transact SQL en unaúnica transacción,disponemosde los
siguientesmétodos:
 Transaccionesexplícitas. Cadatransacciónse iniciaexplícitamenteconlainstrucción BEGIN
TRANSACTION y se termina explícitamente con una instrucción COMMIT o ROLLBACK.
 Transacciones implícitas. Se inicia automáticamente una nueva transacción cuando se
ejecuta una instrucción que realiza modificaciones en los datos, pero cada transacción se
completa explícitamente con una instrucción COMMIT o ROLLBACK.
Para activar-desactivarel modode transaccionesimplícitasdebemosejecutarlasiguiente
instrucción.
Cuando la opción ANSI_DEFAULTS está establecida en ON, IMPLICIT_TRANSACTIONS también
se establece en ON.
El siguiente ejemplo muestra el script anterior haciendo uso de transacciones explicitas.
El siguienteejemplomuestrael mismoscriptcon transaccionesimplícitas:
La transacciónsigue activahasta que emitaunainstrucción COMMITo ROLLBACK. Una vezque
la primera transacción se ha confirmado o revertido, se inicia automáticamente una nueva
transacción la siguiente vez que la conexión ejecuta una instrucción para modificar datos.
La conexión continúa generando transacciones implícitas hasta que se desactiva el modo de
transacciones implícitas.
Podemos verificar el número de transacciones activas a través de @@TRANCOUNT.
Otro punto a teneren cuentacuando trabajamoscon transaccionessonlos bloqueosyel nivel
de aislamiento.
2.6.2 Transacciones anidadas.
Podemos anidar varias transacciones. Cuando anidamos varias transacciones la instrucción
COMMIT afectará a la última transacción abierta, pero ROLLBACK afectará a todas las
transacciones abiertas.
Un hecho a tener en cuenta, es que, si hacemos ROLLBACK de la transacción superior se
desharán también los cambiosde todas las transaccionesinternas, aunque hayamos realizado
COMMIT de ellas.
Una consideración a tener en cuanta cuando trabajamos con transacciones anidadas es la
posibilidad de utilizar puntos de guardado o SAVEPOINTs.
2.6.3 Puntos de recuperación(SavePoint).
Los puntos de recuperación (SavePoints) permiten manejar las transacciones por pasos,
pudiendohacerrollbackshastaunpuntomarcadoporel savepointynoportodalatransacción.
El siguiente ejemplo muestra cómo trabajar con puntos de recuperación.
Características
Las instrucciones básicas de SQL son insertar, consultar, modificar, y eliminar.
En las transacciones existen cuatro características básicas:
Atomicidad: Es la propiedad que asegura que las operacionesse han realizado o no, se realiza
el commit para confirmar o el rollback para deshacer
Consistencia:Es la propiedadque aseguraque soloaquelloque empiezase puede acabar, por
lo tanto se ejecutan solo las operaciones que no vayan a romper las reglas y directrices de
integridad en la base de datos
Aislamiento: Es la propiedad que asegura que una operación no puede afectar a otras. Esto
asegura que la realización de dos transacciones sobre la misma información sean
independientes y no generen ningún tipo de error
Durabilidad:Es la propiedadque aseguraque unavezrealizadalaoperaciónestapersistiráyno
se podrá deshacer aunque falle el sistema
BeginTransaction
Insert
Update
Delete
If Error
Rollback
Else
Commit
Datos importantespara teneren cuenta
 Las transacciones permiten agrupar pasos físicos cuando se realizan modificaciones en las
bases de datos.
 En las transacciones se consolidan con dos instrucciones básicas
COMMIT: Es la confirmaciónde latransacción para la modificaciónde losdatosde labase de
datos
ROLLBACK: Es la que anulacualquiermodificaciónrealizadaalabase de datos.
2.6.4 Ejercicio de transacciones
Ingrese al Servidormedianteel ManagamentStudio.
Cree una base de datos llamada Ventas, dentro de ella una tabla llamada Ventas igualmente,
observe la imagen para ver mejor el diseño.
Ubíquese enestatabla y de clicen laopciónde .
Esto nosllevaa lasiguiente pantalla.
Digitamoslasiguienteinstrucción:
Primeroprocedemosaseleccionarlainformaciónde latablaventas
y damos clickenejecutar locual nospermite verla
siguiente información
Luegoejecutamosloscomandosde latransacción.
Empezamosporejecutar y nosmuestrala siguiente información.
Luegoejecutamosel update.
Como podemosvertenemos1filaafectadasi deseamosconfirmarlaoperaciónseleccionamos
la instrucción COMMIT, y ejecutamos la instrucción.
Si no deseamosrealizarel cambio
Debemosseleccionarlainstrucción ROLLBACKy ejecutarla.
Lo que revierte loscambiosrealizados.

Transacciones en transact sql

  • 1.
    TRANSACCIONESEN TRANSACT SQL Unatransacción es un conjunto de operaciones Transact SQL que se ejecutan como un único bloque,esdecir,si fallaunaoperación TransactSQL fallantodas.Si unatransaccióntiene éxito, todas las modificaciones de los datos realizadas durante la transacción se confirman y se conviertenenunaparte permanente de labase de datos.Si una transacciónencuentraerrores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos. El ejemploclásicode transacciónesunatransferenciabancaria,enlaque quitamossaldoa una cuentay loañadimosenotra. Si no somoscapaces de abonarel dineroenla cuentade destino, no debemos quitarlo de la cuenta de origen. SQL Serverfuncionapordefectocon Transaccionesdeconfirmaciónautomática, esdecir,cada instrucción individual es una transacción y se confirma automáticamente. Sobre el ejemploanteriorde latransferenciabancaria, unscriptdeberíarealizaralgoparecidoa lo siguiente:
  • 2.
    Esta formade actuarseriaerrónea,yaque cadainstrucciónse ejecutaríayconfirmaríade forma independiente, por lo que un error dejaría los datos erróneos en la base de datos (¡yese es el peor error que nos podemos encontrar!) 2.6.1 Transacciones implícitasy explicitas Para agrupar variassentencias Transact SQL en unaúnica transacción,disponemosde los siguientesmétodos:  Transaccionesexplícitas. Cadatransacciónse iniciaexplícitamenteconlainstrucción BEGIN TRANSACTION y se termina explícitamente con una instrucción COMMIT o ROLLBACK.  Transacciones implícitas. Se inicia automáticamente una nueva transacción cuando se ejecuta una instrucción que realiza modificaciones en los datos, pero cada transacción se completa explícitamente con una instrucción COMMIT o ROLLBACK. Para activar-desactivarel modode transaccionesimplícitasdebemosejecutarlasiguiente instrucción. Cuando la opción ANSI_DEFAULTS está establecida en ON, IMPLICIT_TRANSACTIONS también se establece en ON. El siguiente ejemplo muestra el script anterior haciendo uso de transacciones explicitas.
  • 4.
  • 5.
    La transacciónsigue activahastaque emitaunainstrucción COMMITo ROLLBACK. Una vezque la primera transacción se ha confirmado o revertido, se inicia automáticamente una nueva transacción la siguiente vez que la conexión ejecuta una instrucción para modificar datos. La conexión continúa generando transacciones implícitas hasta que se desactiva el modo de transacciones implícitas. Podemos verificar el número de transacciones activas a través de @@TRANCOUNT. Otro punto a teneren cuentacuando trabajamoscon transaccionessonlos bloqueosyel nivel de aislamiento. 2.6.2 Transacciones anidadas.
  • 6.
    Podemos anidar variastransacciones. Cuando anidamos varias transacciones la instrucción COMMIT afectará a la última transacción abierta, pero ROLLBACK afectará a todas las transacciones abiertas. Un hecho a tener en cuenta, es que, si hacemos ROLLBACK de la transacción superior se desharán también los cambiosde todas las transaccionesinternas, aunque hayamos realizado COMMIT de ellas. Una consideración a tener en cuanta cuando trabajamos con transacciones anidadas es la posibilidad de utilizar puntos de guardado o SAVEPOINTs. 2.6.3 Puntos de recuperación(SavePoint). Los puntos de recuperación (SavePoints) permiten manejar las transacciones por pasos, pudiendohacerrollbackshastaunpuntomarcadoporel savepointynoportodalatransacción. El siguiente ejemplo muestra cómo trabajar con puntos de recuperación.
  • 7.
    Características Las instrucciones básicasde SQL son insertar, consultar, modificar, y eliminar. En las transacciones existen cuatro características básicas: Atomicidad: Es la propiedad que asegura que las operacionesse han realizado o no, se realiza el commit para confirmar o el rollback para deshacer Consistencia:Es la propiedadque aseguraque soloaquelloque empiezase puede acabar, por lo tanto se ejecutan solo las operaciones que no vayan a romper las reglas y directrices de integridad en la base de datos Aislamiento: Es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información sean independientes y no generen ningún tipo de error Durabilidad:Es la propiedadque aseguraque unavezrealizadalaoperaciónestapersistiráyno se podrá deshacer aunque falle el sistema BeginTransaction Insert Update Delete If Error Rollback Else Commit
  • 8.
    Datos importantespara tenerencuenta  Las transacciones permiten agrupar pasos físicos cuando se realizan modificaciones en las bases de datos.  En las transacciones se consolidan con dos instrucciones básicas COMMIT: Es la confirmaciónde latransacción para la modificaciónde losdatosde labase de datos ROLLBACK: Es la que anulacualquiermodificaciónrealizadaalabase de datos. 2.6.4 Ejercicio de transacciones Ingrese al Servidormedianteel ManagamentStudio. Cree una base de datos llamada Ventas, dentro de ella una tabla llamada Ventas igualmente, observe la imagen para ver mejor el diseño. Ubíquese enestatabla y de clicen laopciónde . Esto nosllevaa lasiguiente pantalla.
  • 9.
    Digitamoslasiguienteinstrucción: Primeroprocedemosaseleccionarlainformaciónde latablaventas y damosclickenejecutar locual nospermite verla siguiente información Luegoejecutamosloscomandosde latransacción. Empezamosporejecutar y nosmuestrala siguiente información. Luegoejecutamosel update.
  • 10.
    Como podemosvertenemos1filaafectadasi deseamosconfirmarlaoperaciónseleccionamos lainstrucción COMMIT, y ejecutamos la instrucción. Si no deseamosrealizarel cambio Debemosseleccionarlainstrucción ROLLBACKy ejecutarla. Lo que revierte loscambiosrealizados.