Laboratorio 11 - Transacciones en SQL Server - Enunciados
Laboratorio 11 - Transacciones en SQL Server - Enunciados
Objetivos:
Introducción:
Siempre hay tipos de consultas o transacciones especiales que se usan para realizar
copiados de datos, referencias especiales y manejo de estructuras de control y otros.
COPIADO DE TABLAS
Una actividad muy común es el copiado de tablas, tomando todos los datos de una tabla o
una parte de ella, hay que tener en cuenda que el tipo de datos de origen y destino deben
ser del mismo tipo y tamaño.
SENTENCIA IF
Uno de los usos más conocidos para modificar el flujo de un programa es el IF y su modificar
ELSE.
SENTENCIA CASE
La sentencia case de SQL es una estructura condicional que ejecuta ciertas instrucciones
dependiendo de la validez de alguna expresión. Normalmente se usa cuando surgen
múltiples condiciones donde se compara una expresión con una constante literal. Por lo que
se considera una alternativa a la sentencia if en estos casos.
Procedimiento:
PARTE - A
Realiza este ejemplo de copiado total y parcial.
Ahora visualice las tres tablas y vera que una está completa y las otras dos están
vacías, ejecute las siguientes consultas para realizar un copiado de datos.
Nuevamente visualice las tres tablas y vera que se han realizado la copia total y parcial
de datos.
Por ultimo otra forma de copiado de tablas es la forma de copiar tanto los datos como
la estructura que tiene esta, creando una tabla exactamente igual.
A continuación un ejemplo del uso del IF para evitar que una tabla se coloque una
fecha posterior menor a una inicial, por lógica la segunda fecha debería ser mayor que la
primera.
El siguiente ejemplo muestra como actualizar una tabla con el uso de case.
Introducción:
Trigger DDL
Los trigger DDL se ejecutan en respuesta a una variedad de eventos de lenguaje de definición
de datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER
y DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que
ejecutan operaciones de tipo DDL
Manejo de datos
Cuando se quiere agregar, actualizar o eliminar datos de una base de datos, se ejecutan
sentencias DML. Una colección de sentencias DML que forman una unidad lógica de trabajo
es llamada transacción.
Considere una base de datos de un banco. Cuando un cliente del banco transfiere dinero
de su cuenta de ahorros a su cuenta de cheques, la transacción puede consistir de tres
operaciones separadas:
1. Decrementar la cuenta de ahorros.
2. Incrementar la cuenta de cheques.
3. Registrar la transacción en la bitácora de transacciones
Transacción
Una transacción es un conjunto de operaciones que van a ser tratadas como una única
unidad. Estas transacciones deben cumplir 4 propiedades fundamentales comúnmente
conocidas como ACID (atomicidad, coherencia, asilamiento y durabilidad).
La transacción más simple en SQL Server es una única sentencia SQL. Por ejemplo:
Por supuesto este tipo de transacciones no requieren de nuestra intervención puesto que
el sistema se encarga de todo. Sin embargo si hay que realizar varias operaciones y
queremos que sean tratadas como una unidad tenemos que crear esas transacciones de
manera explícita.
Una transacción es un conjunto de operaciones tratadas como una sola. Este conjunto de
operaciones debe marcarse como transacción para que todas las operaciones que la
conforman tengan éxito o todas fracasen.
La sentencia que se utiliza para indicar el comienzo de una transacción es 'BEGIN TRAN'.
Si alguna de las operaciones de una transacción falla hay que deshacer la transacción en
su totalidad para volver al estado inicial en el que estaba la base de datos antes de
empezar. Esto se consigue con la sentencia 'ROLLBACK TRAN'.
Si todas las operaciones de una transacción se completan con éxito hay que marcar el fin
de una transacción para que la base de datos vuelva a estar en un estado consistente con
la sentencia 'COMMIT TRAN'.
Procedimiento:
PARTE - B
ACTUALIZAR
Agreguemos un campo ventaiva
Inicialmente ese campo aparece vacio en todas las columnas y queremos que ese campo
contenga la venta + el 13% del iva, para esto utilizamos la siguiente sentencia.
USO DE VARIABLES
Una variable es un valor identificado por un nombre (identificador) sobre el que
podemos realizar modificaciones.
En Transact SQL los identificadores de variables deben comenzar por el carácter @, es
decir, el nombre de una variable debe comenzar por @. Para declarar variables en
Transact SQL debemos utilizar la palabra clave declare, seguido del identificador y tipo
de datos de la variable.
Ejemplo
Ejemplo 2. Asignando variables en T-SQL, podemos utilizar SET para asignar el resultado de
una consulta (la variable solo podrá contener un único valor)
Disparadores
Digite la siguientes instrucciones y ejecútelas
Ahora insertaremos 2 nuevos datos, pero esta vez dentro de una transacción
Estos datos si realizamos un select * from prueba, se mostraran como insertados en la tabla,
pero si deseamos revertir la inserción digitamos
ROLLBACK TRAN
Verificamos nuevamente la tabla y vemos que la inserción de datos se ha revertido, si
deseamos que los datos se inserten digitamos COMMIT TRAN, pero si anteriormente
habíamos utilizado ROLLBACK nos enviará un mensaje de error: The COMMIT TRANSACTION
request has no corresponding BEGIN TRANSACTION.
Si desea que los datos sean insertados de una sola vez tendrá que digitarlo de la siguiente
manera
Ejemplo 2
Ejemplo 3
Análisis de resultados:
Cree una base de datos de nombre ALMACEN con las siguientes tablas: