Transacciones Base De Datos
Enviado por varareria • 25 de Abril de 2013 • 672 Palabras (3 Páginas) • 637 Visitas
I. Primera Parte: Transacciones Explicitas e Implícitas.
a) Mencionen un ejemplo básico de transacción explicita usando Transact-SQL.
BEGIN TRANSACTION T1
INSERT INTO ALUMNO(ALU_RUT,COM_CORREL,ALU_NOMBRES,ALU_PATERNO,ALU_MATERNO,ALU_FONO,CAR_CODIGO,ALU_SITUACION)VALUES ('77777000-K',77,'ATON','AHSGSA','sbjhash','50087751','29027','V')
COMMITTRANSACTION;
b) Mencionen un ejemplo básico de transacción implícita usando Transact-SQL.
UPDATEALUMNO
SETALU_NOMBRES='ASDFG'
WHEREALU_NOMBRES='ATON';
c) ¿Cuáles son las principales diferencias entre ambas?
En una transacción implícita se inicia automáticamente una nueva transacción cuando se ejecuta una instrucción que realiza modificaciones en los datos (ósea, no debemos indicarle a SQL que hacemos una transacción pero el lo genera), y finalizan cuando se inicia una nueva transacción en la misma sesión.
En cambio en las explicitas hay que indicar cuando se inician (BEGIN TRANSACTION) y cuando finalizan (COMMIT, ROLLBACK), y pueden albergar un conjunto de instrucciones dentro de la misma transacción.
d) Desactive el modo de transacciones implícitas usando Transact-SQL.
SET IMPLICIT_TRANSACTIONS OFF;
GO
II. Segunda Parte: Transacciones Explicitas
a) Generen una transacción explicita que cumpla los siguiente requisitos:
i. Un alumno inscribe una asignatura (tablas: ALUMNO, INSCRIBE, ASIGNATURA)
BEGIN TRANSACTION // Transaccion Activa
INSERT INTO INSCRIBE VALUES(13,'10484058-4','220007',4,2012);
//En el insert pasa a parcialmente Confirmada
COMMIT TRANSACTION;// Transaccion confirmada
ii. Si la situación del alumno es N (no vigente, campo ALU_SITUACION tabla ALUMNO) la transacción se debe abortar y mostrar un mensaje de error al usuario.
**Comentario** El script enviado la situacion del alumno trae 2 variables F Y V, asi que considere a V como valida y F como no valida. Ya que en etse enunciado habia una N.
BEGIN TRANSACTION // Transaccion Activa
DECLARE @SIT VARCHAR(1);
SELECT @SIT = ALU_SITUACION FROM ALUMNO WHERE ALU_RUT = '57104859-4';
IF @SIT = 'F'
BEGIN
PRINT 'ERROR ALUMNO CON SITUACION NO VALIDA';
ROLLBACK TRANSACTION; // Transaccion Abortada
END
ELSE
BEGIN
INSERT INTO INSCRIBE VALUES(14,'57104859-4','220033',4,2012);
// En el insert pasa a Parcialmente confirmada
COMMIT TRANSACTION; // Transaccion Confirmada
END
iii. Si las situación del alumno es V(vigente, campo ALU_SITUACION tabla ALUMNO), la transacción se compromete y se muestra mensaje al usuario del éxito de la misma.
BEGIN TRANSACTION // transaccion iniciada
DECLARE @SIT VARCHAR(1);
SELECT @SIT = ALU_SITUACION FROM ALUMNO WHERE ALU_RUT = '58588558-4';
IF @SIT = 'V'
BEGIN
...