SQL - Trigger en SQL Server 2000

 
Vista:

Trigger en SQL Server 2000

Publicado por Victor (11 intervenciones) el 01/07/2002 21:41:42
Hola a todos, suponiendo las sigtes tablas:

Clientes
Cli_codigo, nombres, saldo

Creditos
cred_codigo, cli_codigo, monto

Quiero actualizar el saldo del cliente después de cada insert en Creditos restando el monto de crédito al saldo del cliente.
En PostgreSQL o Sybase (estos son los que yo conozco) lo haría asi:

Update Clientes set saldo = saldo - NEW.monto where cli_codigo = NEW.cli_codigo

El problema es que en SQL Server no me reconoce el NEW

Como sería en SQL Server 2000 el Update que quiero hacer con el trigger?

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

RE:Trigger en SQL Server 2000

Publicado por Monica (8 intervenciones) el 01/07/2002 21:52:58
SQL utiliza dos cursores "INSERTED" y "DELETED" en donde guarda temporalmente los datos que se están insertando-modificando (inserted) en una tabla o borrando (deleted). Se puede hacer referencia a cada valor nuevo que se quiere insertar haciendo referencia al campo.
EJ: creditos.monto

Yo lo haria mas o menos asi, (bien facil)
If UPDATE(creditos.monto)
declare @monto int
set @monto=Select monto from inserted
begin
update clientes set saldo=saldo-@monto

Por supuesto que hay muchas formas de plantearlo.

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

RE:Trigger en SQL Server 2000

Publicado por Victor (11 intervenciones) el 01/07/2002 23:47:03
Muchas gracias por la ayuda. Pude solucionar mi problema
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

RE:Trigger en SQL Server 2000

Publicado por Islas, Isaías (5072 intervenciones) el 02/07/2002 16:08:06
Hola Monica

Tengo una duda (ya que no habia visto esta instruccion antes), el verbo:

IF UPDATE(Creditos.monto)

Es un "Si la columna MONTO de la tabla CREDITOS fue ACTUALIZADA, entonces".......

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

RE:Trigger en SQL Server 2000

Publicado por EDELRIO (540 intervenciones) el 02/07/2002 16:31:07
Monica:

La verdad yo tampoco la habia visto...

Pudieras ampliar informacion....
Gracias
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

RE:Trigger en SQL Server 2000

Publicado por Monica (8 intervenciones) el 03/07/2002 16:55:56
Bueno cuando yo empecé a utilizar el Transact del SQL, no sabia como hacerlo, al igual que Victor . Pero habia generado mi base de datos con un CASE (Visible Analist) y la programación de la integridad referencial me la generó esta herramienta y ella fue quien la utilizó. Luego yo la aplique en proc. almacenados y triggers y funcionó.
Y es como dice I. Isaias en su pregunta, tal cual.
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

RE:Trigger en SQL Server 2000

Publicado por Islas, Isaías (5072 intervenciones) el 03/07/2002 21:25:11
Hola Monica

Solo que en SQL yo no he visto el verbo IF(UPDATE COL1) .....

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

RE:Trigger en SQL Server 2000

Publicado por Victor (11 intervenciones) el 04/07/2002 23:23:20
el IF UPDATE() y IF ( COLUMNS_UPDATED ( ) hacen la misma cosa, o sea, verifican si el/los campo/s citados dentro del parentecis fué o no modificado, esto funciona no solo para UPDATE, si no también para INSERT.
Eso es lo que dice el Help.
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

RE:Trigger en SQL Server 2000

Publicado por Islas, Isaías (5072 intervenciones) el 05/07/2002 03:50:54
Muchas gracias Vic.

Hoy aprendi algo nuevo.
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

RE:Trigger en SQL Server 2000

Publicado por Islas, Isaías (5072 intervenciones) el 05/07/2002 03:55:19
Gracias Monica por transmitir estos conocimientos, he consultado mi BOL y es correcto IF UPDATE(MyTabla.MyCol), valida la ACTUALIZACION de dicha columna.

Posteo el Bol:

Probar cambios de columnas determinadas
La utilización de la cláusula IF UPDATE (column_name) en la definición de un desencadenador puede servir para determinar si una instrucción INSERT o UPDATE ha afectado a una columna determinada de la tabla. La cláusula da como resultado el valor TRUE (verdadero) siempre que se haya asignado un valor a la columna.

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