[ Foro de SQL (y MySQL) ]

2. Al agregar una transacción por cuenta se deben hacer verificaciones

03-Apr-2017 01:28
Invitado (Trigger al agregar una nueva cuenta)
0 Respuestas

Hola, uso sql 2012, debo crear este trigger:
Al agregar una transacción  por cuenta, si es retiro (se debe verificar) que el valor  de la transacción no exceda al saldo de la cuenta) o consignación se disminuya o incremente el saldo de la cuenta , respectivamente, en ese valor. Se debe verificar la existencia del numero de la cuenta y el código de la transacción.

Create trigger agregar_transaccion on dbo.TransacCuenta
After insert
As
DECLARE @valor_transaccion int,
DECLARE @saldo_cuenta int

SET @valor_transaccion = (SELECT Valor FROM inserted)
SET @saldo_cuenta = (SELECT Saldo FROM dbo.CuentaXCliente)
SET @numero_cuenta = (SELECT NroCuenta FROM inserted)

--Validar que la cuenta exista
If exists (select NroCuenta from dbo.CuentaXCliente where NroCuenta = @numero_cuenta
Begin

--- 02 retiro
If @tipo = 02
Begin
If @valor_transaccion <= @saldo_cuenta
Begin

update dbo.CuentaXCliente set Saldo = Saldo - @valor_transaccion where  NroCuenta = @numero_cuenta
End
Else
Print ?El valor de la transacción no puede ser mayor que el saldo de la cuenta?
End

--01 consignación
If @tipo = 01
Begin
update dbo.CuentaXCliente set Saldo = Saldo + @valor_transaccion where  NroCuenta = @numero_cuenta

End
end
Else
Print ?Esa cuenta no existe?

Me salen muchos errores:
Mens 156, Nivel 15, Estado 1, Procedimiento agregar_transaccion, Línea 6
Sintaxis incorrecta cerca de la palabra clave 'DECLARE'.
Mens 137, Nivel 15, Estado 1, Procedimiento agregar_transaccion, Línea 8
Debe declarar la variable escalar "@valor_transaccion".
Mens 137, Nivel 15, Estado 1, Procedimiento agregar_transaccion, Línea 10
Debe declarar la variable escalar "@numero_cuenta".
Mens 137, Nivel 15, Estado 2, Procedimiento agregar_transaccion, Línea 13
Debe declarar la variable escalar "@numero_cuenta".
Mens 137, Nivel 15, Estado 2, Procedimiento agregar_transaccion, Línea 17
Debe declarar la variable escalar "@tipo".
Mens 137, Nivel 15, Estado 2, Procedimiento agregar_transaccion, Línea 19
Debe declarar la variable escalar "@valor_transaccion".
Mens 137, Nivel 15, Estado 2, Procedimiento agregar_transaccion, Línea 22
Debe declarar la variable escalar "@valor_transaccion".
Mens 137, Nivel 15, Estado 2, Procedimiento agregar_transaccion, Línea 29
Debe declarar la variable escalar "@tipo".
Mens 137, Nivel 15, Estado 2, Procedimiento agregar_transaccion, Línea 31
Debe declarar la variable escalar "@valor_transaccion".




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)