Problema con una transacción - exception
Publicado por Gabriel (1 intervención) el 26/02/2021 20:09:46
Buenas tardes,
Estoy tratando de crear un procedimiento para controlar una transacción pero obtengo un error que no sé resolver:
Cuando trato de ejecutar:
Obtengo el siguiente error:
¿Alguien puede ayudarme?
Muchas gracias.
Saludos
Estoy tratando de crear un procedimiento para controlar una transacción pero obtengo un error que no sé resolver:
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
drop table if exists cuentas;
create table cuentas (
id serial,
nombre varchar(100) not null,
saldo dec(15,2) not null,
primary key(id),
constraint saldo CHECK(saldo > 5000)
);
insert into cuentas(nombre, saldo)
values('Carlos',10000);
insert into cuentas(nombre, saldo)
values('Cesar',10000);
SELECT * FROM cuentas;
drop procedure if exists transferir;
create or replace procedure transferir(id_emisor int,id_receptor int,cantidad dec)
language plpgsql
as $$
begin
-- adding the amount from the recievers's account
update cuentas
set saldo = saldo + cantidad
where id = id_receptor;
-- substracting the amount to the sender's account
update cuentas
set saldo = saldo - cantidad
where id = id_emisor;
commit;
EXCEPTION
WHEN check_violation THEN
RAISE NOTICE 'Violación de saldo.';
rollback;
commit;
end;$$
Cuando trato de ejecutar:
1
call transferir(1,2,1000);
Obtengo el siguiente error:
1
2
3
ERROR: no se puede comprometer mientras hay una subtransacción activa
CONTEXT: función PL/pgSQL transferir(integer,integer,numeric) en la línea 13 en COMMIT
Estado SQL: 2D000
¿Alguien puede ayudarme?
Muchas gracias.
Saludos
Valora esta pregunta


0