Transacción en script SQL Server
Publicado por Santiago (4 intervenciones) el 09/06/2020 15:00:45
Hola:
Tengo el siguiente "script", pero si lo ejecuto en MODO = 'R' no hace el Rollback y da un error de que no hay ninguna transacción abierta. ¿Podéis decirme qué hago mal? Gracias.
Tengo el siguiente "script", pero si lo ejecuto en MODO = 'R' no hace el Rollback y da un error de que no hay ninguna transacción abierta. ¿Podéis decirme qué hago mal? Gracias.
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
DECLARE @MODO CHAR(1),
@ID INT,
@PRODUCTO VARCHAR(50),
@NOMBRE VARCHAR(20);
------------------------------ CONFIGURAR AQUÍ LOS VALORES
SET @MODO = 'R';
SET @ID = '61';
SET @PRODUCTO = 'Camiseta';
SET @NOMBRE = 'Camiseta de fútbol;
PRINT 'MODO DE EJECUCIÓN SELECCIONADO ' + @MODO;
-- SELECT DE VERIFICACIÓN.
IF @MODO = 'V'
BEGIN
PRINT 'VERIFICANDO';
SELECT *
FROM productos
WHERE id = @ID
END
ELSE
BEGIN
-- TRANSACCIÓN
PRINT 'ABRIENDO TRANSACCIÓN';
BEGIN TRANSACTION t1;
BEGIN
PRINT 'EJECUTANDO INSERT';
INSERT INTO productos (id, producto, nombre)
VALUES (@ID, @PRODUCTO, @NOMBRE);
PRINT 'EJECUTANDO SELECT';
SELECT *
FROM productos
WHERE id = @ID;
IF @MODO = 'C'
BEGIN
PRINT 'EJECUTANDO COMMIT';
COMMIT TRAN t1;
END
ELSE
BEGIN
PRINT 'EJECUTANDO ROLLBACK';
ROLLBACK TRAN t1;
END
END;
END
Valora esta pregunta


0