SQL - Trigger al agregar una transacción en un banco

 
Vista:
Imágen de perfil de Jhon Jairo
Val: 30
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Trigger al agregar una transacción en un banco

Publicado por Jhon Jairo (22 intervenciones) el 29/03/2017 23:17:51
Hola, uso sql 2012, tengo que hacer un trigger. Adjunto lo que llevo y toda la información. Si pueden ayudarme se los agradezco.

2. 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.

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
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)
 
 
 
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
 
If @tipo = 01
Begin
	update dbo.CuentaXCliente set Saldo = Saldo + @valor_transaccion where  NroCuenta = @numero_cuenta
 
End

Tablas con sus campos

Cliente > DocIdent, nombre, apellido, dirección, teléfono, FechaIngreso, Estado
Cliente Consulta > DocIdent, nombre, apellido, dirección, teléfono, FechaIngreso, Estado
CuentaXCliente > NroCuenta, DocIdent, Saldo, clave, FechaApertura
TipoTransacción > CodigoT, Descripcion
TransacCuenta > NroCuenta, CodigoT, Valor, Fecha, hora, (clave primaria autonumérica)

Consignación 01
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Trigger al agregar una transacción en un banco

Publicado por Isaias (1921 intervenciones) el 29/03/2017 23:55:29
Regla de los foros, que no mias, no repetir una pregunta, ¿cual es la razon que lo vuelvas a publicar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon Jairo
Val: 30
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Trigger al agregar una transacción en un banco

Publicado por Jhon Jairo (22 intervenciones) el 30/03/2017 00:39:03
¿Entraste sólo para decirme eso? Nada de ayuda sobre la duda....

Agregué otra entrada sin darme cuenta, como aquí no hay casi respuestas, pongo la misma duda en otros sitios...

Anywho, alguien tiene algo de valor como un cambio a este trigger?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Trigger al agregar una transacción en un banco

Publicado por Isaias (1921 intervenciones) el 30/03/2017 01:45:29
Veamos, tu duda es de escuela (tarea escolar) o es de trabajo

En tu posta anterior te hice mi comentario (mas o menos algo asi)

"Porque ponerlo en un trigger si la verificacion la puedes poner en el procedimiento que hara la transaccion y no en el trigger"

¿Que opinas de este comentario que ya te habia hecho?

Las REGLAS de los foros, no las pongo yo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon Jairo
Val: 30
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Trigger al agregar una transacción en un banco

Publicado por Jhon Jairo (22 intervenciones) el 30/03/2017 02:51:33
Yo nunca he dicho que usted pone las reglas. Además admití mi equivocación.

Es para una tarea de la universidad... francamente lo que usted escribió en otro post no lo entendí y me sonó a insulto, por eso no respondí. A mí me interesa la duda, no ofender a los demás.

Esto se está poniendo como una pelea, yo vine a este foro a encontrar respuestas. Le pido por favor a toda persona que entre, que si no va a aportar algo, mejor no diga nada.

Esto de los triggers es nuevo para mí, se que hay un error sencillo en algún lado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Trigger al agregar una transacción en un banco

Publicado por Isaias (1921 intervenciones) el 30/03/2017 18:00:57
De acuerdo, por principio de cuentas, en los foros no resolvemos TAREAS ESCOLARES, pretendemos que los alumnos hagan preguntas especificas.

¿Que son los TRIGGERS y para que fueron creados?

Son "disparadores" (traduccion al español) que ejecutan una serie de instrucciones T-SQL y se crearon para resguardar la integridad referencial, no para colocar la logica o las reglas del negocio.

Una vez aclarado lo anterior, NO SE RECOMIENDA (se puede hacer), que se codifique en este proceso nada del negocio.

¿Donde entonces debo colocar mi LOGICA?

En los PROCEDIMIENTOS ALMACENADOS (store procedure) que haran la funcion de INSERTAR, ACTUALIZAR o BORRAR informacion.

Por ejemplo:

"Verifique que ANTES de otorgar un prestamo, el cliente no haya rebasado su LIMITE DE PRESTAMO"

En mi procedimiento deberia tener algo como:

1
2
3
4
5
6
7
8
9
10
-- Obtengo el LIMITE DE PRESTAMO de un cliente
DECLARE @LimitePrestamo money
SELECT @LimitePrestamo = ISNULL(LimitePrestamo,0) FROM CLIENTE WHERE ClienteID = @ClienteID
 
-- Aqui valido la condicion o regla del negocio
IF (select sum(ImportePrestamo) from PrestamoCliente WHERE ClienteID = @ClienteID) > @LimitePrestamo
 BEGIN
   SELECT "Error, El importe del prestamo esta rebasando el limite de credito del cliente"
   RETURN (-1)
 END

¿Se comprende?

¿Que gano?

Tiempos de respuesta y puedo modificar mi procedimiento en cualquier momento si mi regla cambia

Insisto, es solo un EJEMPLO, no lo estoy codificando en un TRIGGER, que no fueron creados para tal fin.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon Jairo
Val: 30
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Trigger al agregar una transacción en un banco

Publicado por Jhon Jairo (22 intervenciones) el 31/03/2017 02:55:08
Ahora resulta que un foro de dudas no es un foro de dudas porque depende del origen... esa es nueva. Yo con situaciones así busco la respuesta mejor en otra parte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Trigger al agregar una transacción en un banco

Publicado por Isaias (1921 intervenciones) el 31/03/2017 17:42:54
Le he intentado ayudar en sus TAREAS ESCOLARES, que no deberia y todavia se ofende, si esta "amenazando" de irse a otro lugar, juro que con esta actitud tan "positiva", le diran lo mismo.

Que le vaya bien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar