Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

trigger en sql server

Estas en el tema de trigger en sql server en el foro de SQL Server en Foros del Web. hola a todos necesito realizar un trigger que me permita actualizar la tabla prueba cuando la tabla arti_web sea actualizada tengo el siguiente codigo: ALTER ...
  #1 (permalink)  
Antiguo 05/10/2010, 10:08
 
Fecha de Ingreso: octubre-2010
Mensajes: 27
Antigüedad: 14 años, 1 mes
Puntos: 0
trigger en sql server

hola a todos necesito realizar un trigger que me permita actualizar la tabla prueba cuando la tabla arti_web sea actualizada tengo el siguiente codigo:


ALTER TRIGGER [actualizar]
ON [dbo].[arti_web]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[prueba] SET [dbo].[prueba].art_des=art_des, [dbo].[prueba].stock_act=stock_act
WHERE [dbo].[prueba].co_art=co_art
END

no me da error pero cuando actualizo arti_web no me actualiza prueba por favor necesito su ayuda soy nueva en esto de los triggers espero su pronta respuesta
  #2 (permalink)  
Antiguo 05/10/2010, 10:57
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: trigger en sql server

Debes hacer referencia a las tablas INSERTED, DELETED, que es la que tienen los cambios realizados en la tabla "arti_web", toma en cuenta que pueden haber mas de 1 registro.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 05/10/2010, 11:04
 
Fecha de Ingreso: octubre-2010
Mensajes: 27
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: trigger en sql server

como asi no entiendo podrias modificar el codigo que coloque y asi me explica mejor por fa es que esto es nuevo para mi
  #4 (permalink)  
Antiguo 05/10/2010, 11:06
 
Fecha de Ingreso: octubre-2010
Mensajes: 27
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: trigger en sql server

en que parte del codigo debo referenciarlo
  #5 (permalink)  
Antiguo 05/10/2010, 12:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: trigger en sql server

Espero que no te moleste mi comentario, pero si leyeras tu AYUDA EN LINEA, verias que TODAS LAS MODIFICACIONES que se hacen a una tabla y cuyo comportamiento de dichas modificaciones llevaremos a cabo en los TRIGGER's, te darias cuenta que estas, las modificaciones, NO SE HACEN DE FORMA DIRECTA a la tabla en cuestion, si no que, estas, se alojan, como lo dije en las tablas INSERTED o DELETED (segun sea el caso).

Si vas a modificar una tablaX en referencia a las modificaciones que se hayan hecho en la tablaZ, entonces

Código SQL:
Ver original
  1. UPDATE [dbo].[TablaX] SET campoX = INSERTED.campoZ
  2. FROM TablaX.idX = INSERTED.idZ

En este ejemplo, estoy tomando de la tabla INSERTED, el "campoZ" para actualizar mi "tablaX" en su "campoX"
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 05/10/2010, 12:07
 
Fecha de Ingreso: octubre-2010
Mensajes: 27
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: trigger en sql server

gracias =)
  #7 (permalink)  
Antiguo 05/10/2010, 12:36
 
Fecha de Ingreso: octubre-2010
Mensajes: 27
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: trigger en sql server

gracias por responder pero aun asi me da error , entiendo lo que dices pero cambie el codigo tal y como me dices y me da error, esto lo estoy realizando en sql server 2005
  #8 (permalink)  
Antiguo 05/10/2010, 12:38
 
Fecha de Ingreso: octubre-2010
Mensajes: 27
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: trigger en sql server

estoy confundida en como usas la sentencia FROM TablaX.idX = INSERTED.idZ , y otra pregunta tengo que declarar o referenciar estas tablas INSERTED en alguna parte del codigo??
  #9 (permalink)  
Antiguo 05/10/2010, 12:57
 
Fecha de Ingreso: octubre-2010
Mensajes: 27
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: trigger en sql server

MIRA ESTE ES MI CODIGO MODIFICADO

ALTER TRIGGER [actualizar]
ON [dbo].[arti_web]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[prueba] SET art_des=INSERTED.art_des,stock_act=INSERTED.stock_ act
WHERE [dbo].[arti_web].co_art=INSERTED.co_art
END
  #10 (permalink)  
Antiguo 05/10/2010, 13:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: trigger en sql server

No amig@, cuando haces referencia a DOS TABLAS en un UPDATE, debes indicarle el FROM

Código SQL:
Ver original
  1. UPDATE [dbo].[prueba] SET art_des=ins.art_des, stock_act=ins.stock_ act
  2. -- WHERE [dbo].[arti_web].co_art=INSERTED.co_art
  3. FROM [dbo].[prueba] AS prueba JOIN INSERTED AS ins ON prueba.arti_web = ins.co_art
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 05/10/2010, 13:13
 
Fecha de Ingreso: octubre-2010
Mensajes: 27
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: trigger en sql server

Finalmente lo he conseguido =) muchas gracias por todo

Etiquetas: server, sql, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:11.