BASE DE DATOS II

Breaking News

Comments

Social

viernes, 15 de junio de 2018

Transacciones







                    EQUIPO      : Investigation Systems

                    Estudiantes : Aguilar Rafael Jaime
                                          Diaz Guerrero Imer Hobet

                    CURSO       :  Base de Datos II

                    TEMA          :  TRANSACCIONES

                    DOCENTE  :  Marco Aurelio Porro Chulli


                        BAGUA GRANDE - 2018




Transacciones
1.        Contenido
ü  Definición
Una transacción es una unidad de trabajo que se compone de una o más instrucciones SQL que realizan un conjunto de acciones relacionadas.
La transacción puede incluir varias instrucciones SQL, realizando cada una de ellas una tarea específica.
Para que un conjunto de acciones califique como una transacción, debe pasar la prueba ACID. ACID es el acrónimo comúnmente utilizado para referirse a los nombres en inglés de las cuatro características de una transacción (Atomic,Consistent, Isolated y Durable, respectivamente).
ü  Propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad)
v  Atomicidad (Atómic): Esta característica se refiere a la naturaleza todo-o-nada de una transacción. Se realizan ya sea todas las operaciones en una transacción, o ninguna de ellas. Aunque algunas instrucciones sean ejecutadas, los resultados de éstas regresan a su punto inicial si la transacción falla en cualquier punto antes de ser completada. Solamente cuando todas las instrucciones se ejecutan apropiadamente y todas las acciones se realizan, se considera completa una transacción y sus resultados se aplican a la base de datos.
v  Consistencia (Consistent): La base de datos debe ser consistente al inicio y al final de la transacción. De hecho, se puede considerar una transacción como un conjunto de acciones que lleva a la base de datos de un estado consistente a otro. Todas las reglas que definen y limitan los datos deben ser aplicadas a esos datos como resultado de cualquier cambio que ocurra durante la transacción.
Además, todas las estructuras dentro de la base de datos deben estar correctas al final de la transacción.
v  Aislamiento (Isolated): Los datos que pudieran encontrarse en un estado inconsistente temporalmente durante una transacción no deberán estar disponibles a otras transacciones hasta que los datos sean consistentes una vez más. En otras palabras, ningún usuario deberá ser capaz de acceder a los datos inconsistentes durante una transacción implementada por otro usuario cuando los datos impactados por esa transacción están en un estado inconsistente. Además, cuando una transacción se encuentra aislada, ninguna otra transacción puede afectarla.
v Durabilidad (Durable): Una vez que los cambios hechos en una transacción sean completados, esos cambios deberán ser preservados, y los datos deberán estar en un estado confiable y consistente, incluso si ocurren errores de aplicación o de hardware.

Si surge cualquier problema en cualquier momento durante una transacción, la transacción completa regresa a su punto inicial y la base de datos regresa al estado en que se encontraba antes de que la transacción iniciara. Cualquier acción que se tome es cancelada y los datos se restauran a su estado original. Si la transacción se completa exitosamente, entonces todos los cambios son implementados. A través de todo el proceso, la transacción siempre asegura la integridad de la base de datos, sin importar si la transacción fue completada exitosamente o debió regresar a su punto inicial.


ü  Tipos de Transacciones (Implícitas, Explícitas, Ámbito de lote, etc.)

Transacciones Explícitas
Las Transacciones explícitas son las que se define en el código T-SQL. Hay que indicar cuando se inician (BEGIN TRANSACTION) y cuando finalizan (COMMIT TRANSACTION), y pueden albergar un conjunto de instrucciones dentro de la misma transacción.
Cuando se produce el COMMIT, se hacen efectivos los cambios en los ficheros de datos (.mdf y .ndf). Mientras no se realiza el COMMIT las sentencias de los cambios se guardan en el log de transacciones (.log), que gracias a este es posible revertir los cambios si fuese necesario...
Transacciones explícitas, es el modo de trabajo recomendado. y de esta forma se puede tener el control de un conjunto de operaciones, definidas dentro de la misma transacción. Si una operación fuese errónea, es posible hacer ROLLBACK del conjunto de operaciones que están dentro de la misma transacción. Esto nos permite establecer reglas de negocio de forma fácil, y mantener coherencia en los datos según lo que queramos realiza
Transacciones Implícitas
Este tipo de transacciones, se conocen como transacciones "de Confirmación automática" y es el comportamiento predeterminado de SQL Server, donde ejecuta (o hace efectivo los cambios en los ficheros de datos) por separado cada sentencia Transact-SQL justo después de que se termine dicha sentencia.
Cuando una conexión funciona en modo de transacciones implícitas, SQL Server Database Engine (Motor de base de datos de SQL Server) inicia automáticamente una nueva transacción después de confirmar o revertir la transacción actual. No tiene que realizar ninguna acción para delinear el inicio de una transacción, sólo tiene que confirmar o revertir cada transacción. El modo de transacciones implícitas genera una cadena continua de transacciones.
Tras establecer el modo de transacciones implícitas en una conexión, la instancia de Motor de base de datos inicia automáticamente una transacción la primera vez que ejecuta una de estas instrucciones:

La transacción sigue activa hasta que emita una instrucción COMMIT o ROLLBACK. Una vez que la primera transacción se ha confirmado o revertido, la instancia Motor de base de datos inicia automáticamente una nueva transacción la siguiente vez que la conexión ejecuta una de estas instrucciones. La instancia continúa generando una cadena de transacciones implícitas hasta que se desactiva el modo de transacciones implícitas.
El modo de transacciones implícitas se establece mediante la instrucción SET de Transact-SQL o a través de funciones y métodos de la API de bases de datos.

                        Transacciones de Ámbito de Lote

Una transacción implícita o explícita de Transact-SQL que se inicia en una sesión de MARS (conjuntos de resultados activos múltiples), que solo es aplicable a MARS, se convierte en una transacción de ámbito de lote. Si no se confirma o revierte una transacción de ámbito de lote cuando se completa el lote, SQL Server la revierte automáticamente.


ü  Comandos BEGIN TRANSACTION, ROLLBACK TRANSACTION y COMMIT TRANSACTION

BEGIN TRANSACTION
Marca el punto de inicio de una transacción local explícita. Las transacciones explícitas empiezan con la instrucción BEGIN TRANSACTION y acaban con la instrucción COMMIT o ROLLBACK.
Sintaxis
            BEGIN { TRAN | TRANSACTION }  
            [ { transaction_name | @tran_name_variable } 
            [ WITH MARK [ 'description' ] ] 
            ] 
[ ; ]
Argumentos
transaction_name
Es el nombre asignado a la transacción. transaction_name debe cumplir las reglas de los identificadores, pero no se admiten identificadores de más de 32 caracteres. Utilice nombres de transacciones solamente en la pareja más externa de instrucciones BEGIN…COMMIT o BEGIN…ROLLBACK anidadas. transaction_name siempre distingue mayúsculas de minúsculas, incluso cuando la instancia de SQL Server no distingue mayúsculas de minúsculas.
@tran_name_variable
Se trata del nombre de una variable definida por el usuario que contiene un nombre de transacción válido. La variable debe declararse con un tipo de datos charvarcharnchar o nvarchar. Si se pasan más de 32 caracteres a la variable, solo se utilizarán los primeros 32; el resto de caracteres se truncará.
WITH MARK [‘description’]
Especifica que la transacción está marcada en el registro. description es una cadena que describe la marca. Un valor description de más de 128 caracteres se trunca en 128 antes de almacenarse en la tabla msdb.dbo.logmarkhistory.
Si utiliza WITH MARK, debe especificar un nombre de transacción. WITH MARK permite restaurar un registro de transacciones hasta una marca con nombre.

ROLLBACK TRANSACTION
Revierte una transacción explícita o implícita hasta el inicio de la transacción o hasta un punto de retorno dentro de la transacción. Puede usar ROLLBACK TRANSACTION para borrar todas las modificaciones de datos realizadas desde el inicio de la transacción o hasta un punto de retorno.También libera los recursos que mantiene la transacción.

            

              Sintaxis
              ROLLBACK { TRAN | TRANSACTION } 
          [ transaction_name | @tran_name_variable
          | savepoint_name | @savepoint_variable ]
          [ ; ]

Argumentos
transaction_name
Es el nombre asignado a la transacción en BEGIN TRANSACTION. transaction_name debe ajustarse a las reglas para los identificadores, pero solo se usan los 32 primeros caracteres del nombre de la transacción. Cuando se anidan transacciones, transaction_name debe ser el nombre de la instrucción BEGIN TRANSACTION más externa. transaction_name siempre distingue mayúsculas de minúsculas, incluso cuando la instancia de SQL Server no distingue mayúsculas de minúsculas.


@ tran_name_variable
Nombre de una variable definida por el usuario que contiene un nombre de transacción válido. La variable se debe declarar con un tipo de datos charvarcharnchar o nvarchar.
savepoint_name
Es savepoint_name de una instrucción SAVE TRANSACTION. savepoint_name debe ajustarse a las reglas para los identificadores. Utilice savepoint_name cuando una operación de reversión condicional solo deba afectar a parte de la transacción.
@ savepoint_variable
Es el nombre de una variable definida por el usuario que contiene un nombre de punto de retorno válido. La variable debe declararse con un tipo de datos charvarcharnchar o nvarchar.

COMMIT TRANSACTION
Marca el final de una transacción correcta, implícita o explícita. Si @@TRANCOUNT es 1, COMMIT TRANSACTION hace que todas las modificaciones de datos realizadas desde el inicio de la transacción sean parte permanente de la base de datos, libera los recursos mantenidos por la transacción y reduce @@TRANCOUNT a 0. Si @@TRANCOUNT es mayor que 1, COMMIT TRANSACTION solo reduce @@TRANCOUNT en 1 y la transacción se mantiene activa.
Sintaxis
COMMIT [ { TRAN | TRANSACTION }  [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ] 
[ ; ]
transaction_name
Motor de base de datos de SQL Server lo omite. transaction_name especifica un nombre de transacción asignado por una instrucción BEGIN TRANSACTION anterior. transaction_name debe cumplir con las reglas para identificadores, pero no puede superar los 32 caracteres.transaction_name se puede usar como una ayuda de legibilidad, ya que indica a los programadores a qué instrucción BEGIN TRANSACTION anidada está asociada la instrucción COMMIT TRANSACTION.
@tran_name_variable
Se trata del nombre de una variable definida por el usuario que contiene un nombre de transacción válido. La variable se debe declarar con un tipo de datos char, varchar, nchar o nvarchar. Si se pasan más de 32 caracteres a la variable, solo se usarán 32 caracteres; el resto de los caracteres se truncarán.
DELAYED_DURABILITY
La opción que solicita esta transacción se confirma con la durabilidad diferida. Se omitirá la solicitud si la base de datos se ha
modificado con DELAYED_DURABILITY = DISABLED o DELAYED_DURABILITY = FORCED. Vea el tema Control de la durabilidad de las transacciones para más obtener información.
ü  Ejemplos
En la BdTransacciones, en la tabla Producto realizar Transacciones

1. Utilizando Commit modificar +1 la Existencia del Producto Leche Gloria, es decir no hubo ningún error
--Transaaciones
           Begin Transaction
   --Primera acción física de la Transacción
           Update Producto
           set Existencia=Existencia+1
           where NomProducto='Leche Gloria'
  --Fin de Transacción
           commit



                        Después de realizar Transacción
                          

                       
2. Utilizando Rollback modificar +0.50 la CostoUnitario del Producto Ace Patito, es decir hubo ningún error

--Transaaciones
              Begin Transaction
   --Primera acción física de la Transacción
              Update Producto
              set CostoUnitario=CostoUnitario+0.5
              where NomProducto='Ace Patito'
   --Fin de Transacción
             
              Rollback



 
Pero si aplicamos Rollback miremos que sucede con el Costo Unitario, vuelve a su costo que era antes de ser modificado.


           



Use master
Go
IF EXISTS(SELECT * FROM sysdatabases WHERE name = 'BDTienda')
DROP DATABASE BDTienda
Go
CREATE DATABASE BDTienda
GO
Use BDTienda
Go

--Tablas
CREATE TABLE Marca
(codmarca CHAR (3) NOT NULL,
nombremarca VARCHAR(30) NOT NULL
)
GO

ALTER TABLE Marca ADD CONSTRAINT PK_Marca PRIMARY KEY (codmarca)
GO

CREATE TABLE Categoria
(codcategoria CHAR (4) NOT NULL,
nombrecategoria VARCHAR(30) NOT NULL,
descripcion VARCHAR(50) NOT NULL
)
GO

ALTER TABLE Categoria ADD CONSTRAINT PK_Categoria PRIMARY KEY (codcategoria)
GO

CREATE TABLE Producto
( codproducto CHAR(5) NOT NULL,
nombreproducto VARCHAR(100) NOT NULL,
preciounitario DECIMAL(6,2) NOT NULL,
existencia INT NOT NULL,
idmarca CHAR(3) ,
idcategoria CHAR(4) ,
)
GO

ALTER TABLE Producto ADD CONSTRAINT PK_Producto PRIMARY KEY (codproducto)
GO

--Relaciones
ALTER TABLE Producto ADD CONSTRAINT FK_ProductoMarca FOREIGN KEY (idmarca) REFERENCES Marca(codmarca)
GO
ALTER TABLE Producto ADD CONSTRAINT FK_ProductoCategoria FOREIGN KEY (idcategoria) REFERENCES Categoria(codcategoria)
GO

--Procedimientos Almacenados INSERT utilizando Transacciones
--Marca
CREATE PROCEDURE sp_Inserta_Marca
@col1 CHAR(3),
@col2 VARCHAR(30)
AS
BEGIN TRAN
INSERT Marca VALUES(@col1,@col2)
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go

UPDATE UTLIZANDO TRANSACCIONES
CREATE PROCEDURE sp_Actualiza_Marca
@col1 CHAR(3),
@col2 VARCHAR(30)
AS
BEGIN TRAN
UPDATE Marca SET nombremarca=@col2 WHERE codmarca=@col1
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go

DELETE UTILIZANDO TRANSACCIONES

CREATE PROCEDURE sp_Elimina_Marca
@col1 CHAR(3)
AS
BEGIN TRAN
DELETE FROM Marca WHERE codmarca=@col1
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go
CREATE PROCEDURE sp_Listado_Marca
AS
SELECT * FROM Marca ORDER BY 2
Go

--Categoria
CREATE PROCEDURE sp_Inserta_Categoria
@col1 CHAR(4),
@col2 VARCHAR(30),
@col3 VARCHAR(50)
AS
BEGIN TRAN
INSERT Categoria VALUES(@col1,@col2,@col3)
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go

CREATE PROCEDURE sp_Actualiza_Categoria
@col1 CHAR(4),
@col2 VARCHAR(30),
@col3 VARCHAR(50)
AS
BEGIN TRAN
UPDATE Categoria SET nombrecategoria=@col2,descripcion=@col3 WHERE codcategoria=@col1
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go
CREATE PROCEDURE sp_Elimina_Categoria
@col1 CHAR(4)
AS
BEGIN TRAN
DELETE FROM Categoria WHERE codcategoria=@col1
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go
CREATE PROCEDURE sp_Listado_Categoria
AS
SELECT * FROM Categoria ORDER BY 2
Go

--Producto
CREATE PROCEDURE sp_Inserta_Producto
@col1 CHAR(5),
@col2 VARCHAR(100),
@col3 DECIMAL(6,2),
@col4 INT,
@col5 VARCHAR(30),
@col6 VARCHAR(30)
AS
BEGIN TRAN
DECLARE @cod_mar CHAR(3)
DECLARE @cod_cat CHAR(4)
SELECT @cod_mar=codmarca FROM Marca WHERE nombremarca=@col5
SELECT @cod_cat=codcategoria FROM Categoria WHERE nombrecategoria=@col6
INSERT Producto VALUES(@col1,@col2,@col3,@col4,@cod_mar,@cod_cat)
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go

CREATE PROCEDURE sp_Actualiza_Producto
@col1 CHAR(5),
@col2 VARCHAR(100),
@col3 DECIMAL(6,2),
@col4 INT,
@col5 VARCHAR(30),
@col6 VARCHAR(30)
AS
BEGIN TRAN
DECLARE @cod_mar CHAR(3)
DECLARE @cod_cat CHAR(4)
SELECT @cod_mar=codmarca FROM Marca WHERE nombremarca=@col5
SELECT @cod_cat=codcategoria FROM Categoria WHERE nombrecategoria=@col6
UPDATE Producto SET nombreproducto=@col2,preciounitario=@col3,existencia=@col4,idmarca=@cod_mar, idcategoria=@cod_cat
WHERE codproducto=@col1
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go

CREATE PROCEDURE sp_Elimina_Producto
@col1 CHAR(7)
AS
BEGIN TRAN
DELETE FROM Producto WHERE codproducto=@col1
IF @@ERROR<>0 GOTO verError
COMMIT TRAN
RETURN(0)
verError:
ROLLBACK TRAN
RETURN (-1)
Go

CREATE PROCEDURE sp_Listado_Producto
AS
SELECT * FROM Producto ORDER BY 2
Go


CREATE VIEW V_Basico_Producto
AS
SELECT codproducto,nombreproducto,preciounitario,existencia,nombremarca,nombrecategoria
FROM Producto P,Marca M, Categoria C
WHERE P.idmarca=M.codmarca AND P.idcategoria=C.codcategoria
Go

--Registros
EXEC sp_Inserta_Marca 'M01','INTEL'
EXEC sp_Inserta_Marca 'M02','Cannon'
EXEC sp_Inserta_Marca 'M03','HP'
EXEC sp_Inserta_Marca 'M04','Samsung'
EXEC sp_Inserta_Marca 'M05','KINSTONG'

EXEC sp_Inserta_Marca 'M06','D-LINK'
EXEC sp_Inserta_Marca 'M07','GX-Force'
EXEC sp_Inserta_Marca 'M08','Creative'
EXEC sp_Inserta_Marca 'M09','LG'
Go
EXEC sp_Listado_Marca
Go
EXEC sp_Inserta_Categoria 'C001','Entrada','Teclados,Scanner,Lapiz Optico,etc'
EXEC sp_Inserta_Categoria 'C002','Salida','Impresora,Monitores,etc'
EXEC sp_Inserta_Categoria 'C003','Entrada / Salida','Pantallas Tactiles,etc'
EXEC sp_Inserta_Categoria 'C004','Otros','Mainboard,Memorias ,etc'
Go
EXEC sp_Listado_Categoria
Go
EXEC sp_Inserta_Producto '00001','Mainboard PERL815 Bus 800',540.00,100,'INTEL','Entrada'
EXEC sp_Inserta_Producto '00002','Memorias DDR3 1 GB',200.00,80,'KINSTONG','Entrada'
EXEC sp_Inserta_Producto '00003','Microprocesador 3.2 GHZ HP',380.50,70,'INTEL','Entrada'
EXEC sp_Inserta_Producto '00004','Tarjeta de Red 100/100 Full Duplex',380.50,70,'D-LINK','Entrada'
EXEC sp_Inserta_Producto '00005','Monitor 17" Pantalla Plana LED Full HD',435.00,20,'D-LINK','Salida'
EXEC sp_Inserta_Producto '00006','Disco Duro 500 GB 7200 RPM',450.00,40,'KINSTONG','Entrada'
EXEC sp_Inserta_Producto '00007','Mainboard MSV415 Bus 500',185.00,20,'INTEL','Entrada'
EXEC sp_Inserta_Producto '00008','Scanner 3200 ',180.50,25,'HP','Entrada'
EXEC sp_Inserta_Producto '00009','Disco Duro 720 GB 7200 RPM',325.00,40,'Samsung','Entrada'
EXEC sp_Inserta_Producto '00010','Microprocesador 2.8 GHZ HP',450.50,70,'INTEL','Entrada'
EXEC sp_Inserta_Producto '00011','Impresora Injet PX-2500',120.50,70,'Cannon','Entrada'
EXEC sp_Inserta_Producto '00012','Grabadora DVD',380.50,70,'LG','Entrada'
EXEC sp_Inserta_Producto '00013','Monitor 18" Pantalla LED FLATON',380.50,70,'LG','Salida'
EXEC sp_Inserta_Producto '00014','Lectora DVD',100.50,30,'LG','Entrada'

EXEC sp_Inserta_Producto '00015','Web Cam 1024 x 2048 pixel',150.00,10,'D-LINK','Entrada'
EXEC sp_Inserta_Producto '00016','Mouse Optico',15.50,20,'HP','Entrada'
EXEC sp_Inserta_Producto '00017','Memoria USB 32 GB',55.00,20,'KINSTONG','Entrada'
EXEC sp_Inserta_Producto '00018','Memoria USB 16 GB',30.00,15,'KINSTONG','Entrada'
EXEC sp_Inserta_Producto '00019','Teclado Multimedia 101 Teclas',35.50,20,'Creative','Entrada'
EXEC sp_Inserta_Producto '00020','Monitor 18" Pantalla LED Color Negro ',320.50,12,'LG','Salida'
Go

EXEC sp_Listado_Producto
Go

SELECT * FROM V_Basico_Producto
Go




2.        Resumen

Transacción: Es una unidad de trabajo que se compone de una o más instrucciones SQL que realizan un conjunto de acciones relacionadas.
Propiedades ACID
Atomicidad: Esta característica se refiere a la naturaleza todo-o-nada de una transacción. Se realizan ya sea todas las operaciones en una transacción, o ninguna de ellas.
Consistencia: La base de datos debe ser consistente al inicio y al final de la transacción.
Aislamiento: Los datos que pudieran encontrarse en un estado inconsistente temporalmente durante una transacción no deberán estar disponibles a otras transacciones hasta que los datos sean consistentes una vez más.
Durabilidad: Una vez que los cambios hechos en una transacción sean completados, esos cambios deberán ser preservados.

Tipos
Transacciones explícitas
Cada transacción se inicia explícitamente con la instrucción BEGIN TRANSACTION y se termina explícitamente con una instrucción COMMIT o ROLLBACK.
Transacciones implícitas
Se inicia implícitamente una nueva transacción cuando se ha completado la anterior, pero cada transacción se completa explícitamente con una instrucción COMMIT o ROLLBACK.
Transacciones de ámbito de lote
Una transacción implícita o explícita de Transact-SQL que se inicia en una sesión de MARS (conjuntos de resultados activos múltiples), que solo es aplicable a MARS.

Comandos
Begin Transaction
Marca el punto de inicio de una transacción local explícita. Las transacciones explícitas empiezan con la instrucción BEGIN TRANSACTION y acaban con la instrucción COMMIT o ROLLBACK.
Commit Transaction
Marca el final de una transacción correcta, implícita o explícita. Si @@TRANCOUNT es 1, COMMIT TRANSACTION hace que todas las modificaciones de datos realizadas desde el inicio de la transacción sean parte permanente de la base de datos.
Rollback Transaction
Revierte una transacción explícita o implícita hasta el inicio de la transacción o hasta un punto de retorno dentro de la transacción. Puede usar ROLLBACK TRANSACTION para borrar todas las modificaciones de datos realizadas desde el inicio de la transacción o hasta un punto de retorno.


3.        Summary
Transaction: It is a unit of work that is composed of one or more SQL statements that perform a set of related actions.
ACID Properties
Atomicity: This feature refers to the all-or-nothing nature of a transaction. All transactions are performed in one transaction, or none of them.
Consistency: The database must be consistent at the beginning and end of the transaction.
Isolation: Data that might be in a temporarily inconsistent state during a transaction should not be available to other transactions until the data is consistent once more.
Durability: Once the changes made in a transaction are completed, those changes must be preserved.

Types
Explicit transactions
Each transaction is explicitly started with the BEGIN TRANSACTION statement and is terminated explicitly with a COMMIT or ROLLBACK statement.
Implicit transactions
A new transaction is implicitly started when the previous one is completed, but each transaction is explicitly filled in with a COMMIT or ROLLBACK statement.
Batch scope transactions
An implicit or explicit Transact-SQL transaction that starts in a MARS session (multiple active result sets), which is only applicable to MARS.





Commands
Begin Transaction
Marks the start point of an explicit local transaction. Explicit transactions start with the BEGIN TRANSACTION statement and end with the COMMIT or ROLLBACK statement.
Commit Transaction
Mark the end of a correct, implicit or explicit transaction. If @@ TRANCOUNT is 1, COMMIT TRANSACTION makes all data modifications made from the beginning of the transaction a permanent part of the database.
Rollback Transaction
Reverses an explicit or implicit transaction until the start of the transaction or up to a point of return within the transaction. You can use ROLLBACK TRANSACTION to delete all data modifications made from the start of the transaction or up to a point of return.
4.        Recomendaciones
ü Es muy importante trabajar con Transacciones ya que no sabemos que en cualquier momento exista un error el en el proceso que estés realizando en el sistema.
ü Las Transacciones se pueden utilizar con Lenguaje de Manipulación de Datos DML (INSERT, UPDATE, DELETE, SELECT); cómo también con Lenguaje de Definición de Datos DDL (CREATE, DROP, ALTER).
ü En diferentes Gestores de Base de Datos se utilizan Transacciones, para la mejor control de datos en una BD.




5.        Conclusiones
ü  Un sistema de base de datos todas las operaciones relacionadas entre sí que se ejecuten dentro un mismo flujo lógico de trabajo, deben ejecutarse en bloque. De esta manera si todas funcionan la operación conjunta de bloque tiene éxito, pero si falla cualquiera de ellas, deberán retrocederse todas las anteriores que ya se hayan realizado. De esta forma evitamos que el sistema de datos quede en un estado incongruente.
ü  Una transacción es una unidad de trabajo compuesta por diversas tareas, cuyo resultado final debe ser que se ejecuten todas o ninguna de ellas.
ü  Que luna 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).
6.        Apreciación del Equipo
ü  Para encargarse este tipo de inconsistencias en los datos como se describe en el siguiente ejemplo, SQL utiliza transacciones para controlar las acciones de los usuarios individuales. Un usuario pudiera estar viendo los datos en una tabla, tomar cierto tipo de acción basada en esos datos, y luego arrojarlos a la tabla para verificar los datos una vez más. Sin embargo, si otro usuario actualiza la tabla entre los dos momentos que el primer usuario la visualiza, el primer usuario encontrará datos diferentes la segunda vez que lo hace, y pudiera incluso notar que la acción tomada por el segundo usuario invalidó los cambios que ambos hicieron después de haber visto la tabla por primera vez.
ü  Existen infinidad de posibilidades de que algo salga mal  en cualquier proceso que involucre varias operaciones, y las posibilidades de fallo se multiplican a medida que aumenta la simultaneidad de acceso a la misma información. Por eso los sistemas de datos grandes son muy complejos.
ü  Para situaciones cómo se va la luz eléctrica, existen las transacciones: marcan bloques completos de operaciones y comprueban que, o se realizan todas, o que si hay algún problema se deshacen todas.
7.        Glosario de Términos
ü  Atomicidad: Las operaciones que componen una transacción deben considerarse como una sola.
ü  Consistencia: Una operación nunca deberá dejar datos inconsistentes.
ü  Aislamiento: Los datos "sucios" deben estar aislados, y evitar que los usuarios utilicen información que aún no está confirmada o validada. (por ejemplo: ¿sigue siendo válido el saldo mientras realizo la operación?)
ü  Durabilidad: Una vez completada la transacción los datos actualizados ya serán permanentes y confirmados.
ü  Implícitas: Cuando el gestor de datos comienza una transacción automáticamente cada vez que se produce una actualización de datos, pero el que dicha transacción se confirme o se deshaga, lo debe indicar el programador.
ü  Explícitas: Son las que iniciamos nosotros "a mano" mediante instrucciones SQ. somos nosotros, los programadores, los que indicamos qué operacio0nes va a abarcar.
ü  BEGIN TRANSACTION o BEGIN TRAN: Marca el inicio de una transacción. TRAN es un sinónimo de TRANSACTION y se suele usar más a menudo por abreviar.
ü  ROLLBACK TRANSATION o ROLLBACK TRAN: Fuerza que se deshaga la transacción en caso de haber un problema o querer abandonarla. Cierra la transacción.
ü  COMMIT TRANSACTION O COMMIT TRAN: Confirma el conjunto de operaciones convirtiendo los datos en definitivos. Marca el éxito de la operación de bloque y cierra la transacción.
ü  READ COMMITED: Una transacción no podrá ver los cambios de otras conexiones hasta que no hayan sido confirmados o descartados.
ü  READ UNCOMMITTED: No afectan los bloqueos producidos por otras conexiones a la lectura de datos.
ü  SNAPSHOT: Los datos seleccionados en la transacción se verán tal y como estaban al comienzo de la transacción, y no se tendrán en cuenta las actualizaciones que hayan sufrido por la ejecución de otras transacciones simultáneas.

8.        Bibliografía o Linkografía



https://docs.microsoft.com/en-us/sql/t-sql/language-elements/commit-transaction-transact-sql?view=sql-server-2017




LINK DE DIAPOSITIVAS



VIDEOS













1 comentario :

Designed By Published... James