Duda Triggers

22/02/2004 - 20:06 por Francisco Goncalves | Informe spam
Hola Grupo

Tengo una duda... En una tabla tengo un trigger para Update que hace un cálculo y lo graba en uno de los campos. Por qué razón cuando hago una actualización masiva que afectará a más de un registro el trigger sólo actualiza el último registro afectado ?

Es por razones de configuración o simplemente no se dispara en esas condiciones ?

Gracias

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
22/02/2004 - 21:21 | Informe spam
Hola:

Los triggers en SQL Server no se disparan una vez por cada fila, sino una
vez por sentencia que ejecutes.

Si lo que deseas es hacer un trigger que actualice todas las filas afectadas
por tu sentencia update deberás utilizar las tablas temporales inserted y
deleted.

Puedes consultar en www.portalsql.com artículos sobre la utilización de
triggers (busca allí la palabra triggers) y ejemplos de uso que te pueden
aclarar su funcionamiento. Y si tras leerlos y consultar la ayuda tienes
alguna duda, aquí estamos para ayudarte :-)

Un saludo
Salvador Ramos
Murcia - España

No puedes conseguir software rápidamente disminuyendo su calidad.
En cambio, si que lo consigues aumentando la calidad.

www.helpdna.net (información sobre Windows DNA, SQL Server, VB, ...)


Microsoft MVP SQL Server
MCP SQL Server
PASS Spanish Group (www.sqlpass.org)


"Francisco Goncalves" escribió en el
mensaje news:
Hola Grupo

Tengo una duda... En una tabla tengo un trigger para Update que hace un


cálculo y lo graba en uno de los campos. Por qué razón cuando hago una
actualización masiva que afectará a más de un registro el trigger sólo
actualiza el último registro afectado ?

Es por razones de configuración o simplemente no se dispara en esas


condiciones ?

Gracias
Respuesta Responder a este mensaje
#2 Francisco Goncalves
22/02/2004 - 21:46 | Informe spam
Gracias Salvador, le echaré un vistazo.
Respuesta Responder a este mensaje
#3 Francisco Goncalves
23/02/2004 - 15:41 | Informe spam
Hola Salvado

Vi el ejemplo en portalsql..

begi
update c set Usuario=user,fechaMod=getdate()
from clientes c inner join inserted i on c.id=i.i
en

Còmo harìa yo para actualizar pero tomando en cuenta que el valor viene desde la misma tabla inserted. Es decir, tomar un valor de la tabla inserted y actualizar otra tabla con ese valor

Gracias
Respuesta Responder a este mensaje
#4 Salvador Ramos
23/02/2004 - 16:11 | Informe spam
En la instrucción que has utilizado, ya tienes una join con la tabla
inserted, puedes utilizar i.CampoDeLaTabla dentro de la instrucción. Te
refieres a eso ?

Ej:

begin
update c set Usuario=user,fechaMod=getdate(), c.OtroCampo i.CampoDeInserted
from clientes c inner join inserted i on c.id=i.id
end


Un saludo
Salvador Ramos
Murcia - España

No puedes conseguir software rápidamente disminuyendo su calidad.
En cambio, si que lo consigues aumentando la calidad.

www.helpdna.net (información sobre Windows DNA, SQL Server, .NET, ...)


Microsoft MVP SQL Server
MCP SQL Server
PASS Spanish Group (www.sqlpass.org)


"Francisco Goncalves" escribió en el
mensaje news:
Hola Salvador

Vi el ejemplo en portalsql...

begin
update c set Usuario=user,fechaMod=getdate()
from clientes c inner join inserted i on c.id=i.id
end

Còmo harìa yo para actualizar pero tomando en cuenta que el valor viene


desde la misma tabla inserted. Es decir, tomar un valor de la tabla
inserted y actualizar otra tabla con ese valor.

Gracias
Respuesta Responder a este mensaje
#5 Salvador Ramos
23/02/2004 - 16:13 | Informe spam
También te recomiendo este artículo, por si no lo has leído, es muy
práctico:
http://www.configuracionesintegrale...articulo=5

Un saludo
Salvador Ramos
Murcia - España

No puedes conseguir software rápidamente disminuyendo su calidad.
En cambio, si que lo consigues aumentando la calidad.

www.helpdna.net (información sobre Windows DNA, SQL Server, .NET, ...)


Microsoft MVP SQL Server
MCP SQL Server
PASS Spanish Group (www.sqlpass.org)


"Francisco Goncalves" escribió en el
mensaje news:
Hola Salvador

Vi el ejemplo en portalsql...

begin
update c set Usuario=user,fechaMod=getdate()
from clientes c inner join inserted i on c.id=i.id
end

Còmo harìa yo para actualizar pero tomando en cuenta que el valor viene


desde la misma tabla inserted. Es decir, tomar un valor de la tabla
inserted y actualizar otra tabla con ese valor.

Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida