-
Notifications
You must be signed in to change notification settings - Fork 0
/
645_595_147_079_U3U4P18.sql
130 lines (90 loc) · 2.88 KB
/
645_595_147_079_U3U4P18.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
-- PONER EN USO LA BD
USE SUPER
-- 1. INSERTATE COMO TRABAJADOR CON EL CARGO DE "CAJERO"
INSERT INTO TRABAJADOR
VALUES
('JESUS','CAJERO',2500)
SELECT * FROM TRABAJADOR
--2. AHORA CON UNA TRANSACCIÓN INSERTA A 2 PERSONAS MÁS QUE SEAN CAJEROS IGUALMENTE
BEGIN TRAN
INSERT INTO TRABAJADOR VALUES('KEI', 'CAJERO', 1500)
INSERT INTO TRABAJADOR VALUES('ROXY', 'CAJERO', 1500)
SELECT * FROM TRABAJADOR
--3. SELECCIONA EL ROLLBACK PARA CANCELAR LA TRANSACCIÓN Y VERIFÍCALO
ROLLBACK
SELECT * FROM TRABAJADOR
--4. CON UNA TRANSACCIÓN INSERTA UN PRODUCTO
BEGIN TRAN
INSERT INTO PRODUCTOS VALUES('GANSITO', 'Pan relleno de chocolate', 12)
SELECT * FROM PRODUCTOS
--5. PARA CONFIRMAR LA TRANSACCIÓN UTILIZA EL COMMIT
COMMIT
SELECT * FROM PRODUCTOS
--6. AHORA INTENTA DESHACER LA TRANSACCIÓN CON EL ROLLBACK. VERIFICA QUE NO HAYA FUNCIONADO
ROLLBACK
SELECT * FROM PRODUCTOS
--7. HAZ UNA TRANSACCIÓN AGREGANDO UNA NUEVA VENTA CON LA FECHA DEL 2021-11-20 Y SU DETALLE DE VENTA, PERO QUE ESTE ÚLTIMO TENGA UN ID INEXSISTENTE
BEGIN TRAN
INSERT INTO VENTAS VALUES('2021-11-20')
INSERT INTO DETALLES_VENTAS VALUES(6, 1, 2, 26)
--8. VERIFICA QUE LA VENTA FUE REGISTRADO PERO LOS DETALLES NO Y BORRA LA VENTA HECHA ANTERIORMENTE
SELECT * FROM VENTAS
SELECT * FROM DETALLES_VENTAS
ROLLBACK
--9. VUELVE A HACER LA TRANSACCIÓN ANTERIOR PERO AHORA USANDO UN IF PARA QUE NO SE REALICE LA TRANSACCIÓN SI HAY UN ERROR
DECLARE @ERROR INT
BEGIN TRAN
INSERT INTO VENTAS VALUES('2021-11-20')
INSERT INTO DETALLES_VENTAS VALUES(8, 1, 2, 26)
SET @ERROR = @@ERROR
IF(@ERROR <> 0)
BEGIN
ROLLBACK TRAN
PRINT 'ERROR!!!! NO SE PUDO INSERTAR EL REGISTRO'
END
ELSE
COMMIT
SELECT * FROM VENTAS
SELECT * FROM DETALLES_VENTAS
--10. AGREGA CON PRINT UN MENSAJE DE ERROR AL IF QUE DIGA "ERROR EN LA TRANSACCIÓN"
DECLARE @ERROR INT
BEGIN TRAN
INSERT INTO VENTAS VALUES('2021-11-20')
INSERT INTO DETALLES_VENTAS VALUES(10, 1, 2, 26)
SET @ERROR = @@ERROR
IF(@ERROR <> 0)
BEGIN
ROLLBACK TRAN
PRINT 'ERROR EN LA TRANSACCIÓN'
END
ELSE
COMMIT
SELECT * FROM VENTAS
SELECT * FROM DETALLES_VENTAS
--11. POR ÚLTIMO MODIFICA LA INSERCIÓN DE DETALLES_VENTAS PARA QUE TODO ESTÉ CORRECTO
DECLARE @ERROR INT
BEGIN TRAN
INSERT INTO VENTAS VALUES('2021-11-20')
INSERT INTO DETALLES_VENTAS VALUES(6, 1, 2, 26)
SET @ERROR = @@ERROR
IF(@ERROR <> 0)
BEGIN
ROLLBACK TRAN
PRINT 'ERROR EN LA TRANSACCIÓN'
END
ELSE
COMMIT
--12. REVISA QUE EFECTIVAMENTE SE HAYA REGISTRADO LA VENTA Y SUS DETALLES
SELECT * FROM VENTAS
SELECT * FROM DETALLES_VENTAS
--13. INTENTA HACER UN ROLLBACK PARA VERIFICAR QUE EL COMMIT SE HAYA EFECTUADO CORRECTAMENTE
ROLLBACK
--14. HAZ UNA TRANSACCIÓN ACTUALIZANDO TU NOMBRE Y CAMBIANDO TU SUELDO A 9000
BEGIN TRAN
UPDATE TRABAJADOR SET TRABAJADOR.nombre_tra = 'ALBERTO'
WHERE id_tra = 5
UPDATE TRABAJADOR SET TRABAJADOR.sueldo = 9000
WHERE id_tra = 5
--15. UTILIZA EL COMMIT Y VERIFICA QUE SE HAYAN HECHO LOS CAMBIOS
COMMIT
SELECT * FROM TRABAJADOR