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

Crear Triggers

Estas en el tema de Crear Triggers en el foro de SQL Server en Foros del Web. Hola, podrían orientarme en cómo crear un trigger en SQL Server 2000?? gracias de antemano caroby...
  #1 (permalink)  
Antiguo 04/04/2006, 12:39
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 18 años, 6 meses
Puntos: 0
Exclamación Crear Triggers

Hola, podrían orientarme en cómo crear un trigger en SQL Server 2000??
gracias de antemano

caroby
  #2 (permalink)  
Antiguo 04/04/2006, 14:06
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
¿Qué quieres lograr y es más sencillo orientarte?

La ayuda general es: tienes 2 tablas virtuales INSERTED y DELETED, que contienen los datos afectados.

INSERT solo usa INSERTED
UPDATE usa INSERTED y DELETED
DELETE solo usa DELETED

Sobre eso haces sentencias para lograr lo que quieras hacer, por ejemplo una auditoria:

CREATE TRIGGER mitrigger
ON mitabla
FOR DELETE

INSERT INTO registro
SELECT 'borrado', GetDate(), 'fulanito', campo1, campo2
FROM Deleted
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 04/04/2006, 15:29
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 18 años, 6 meses
Puntos: 0
Exclamación trigger con update

ok, voy entendiendo.. y si ahora quisiera hacer un update? como quedaria?
fijate hice este insert:

CREATE TRIGGER tgrInsertData
ON tabla_prueba2
INSTEAD OF INSERT
AS
BEGIN
Declare @codigo int
Declare @nombre varchar(50)
select @codigo = cod, @nombre = nombre from inserted
INSERT INTO tabla_prueba2(cod, nombre, id_nombre) VALUES(@codigo, @nombre, 1)
END

y funciona perfect!

ahora quiero hacer un trigger update, pero no se donde guardaria el campo viejo de la tabla q va a ser modificado, para luego usarlo en la condicion (where) del update.. como hago eso??

gracias de antemano..

caroby
  #4 (permalink)  
Antiguo 04/04/2006, 15:44
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 18 años, 6 meses
Puntos: 0
listo! ya me funciono!!! todo perfect!!! :):):)

caroby
  #5 (permalink)  
Antiguo 05/04/2006, 15:55
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Ese código tiene una desventaja:
select @codigo = cod, @nombre = nombre from inserted

Eso asume que SIEMPRE cambiarás un solo registro. Lo cual es casi siempre falso (podemos suponer que la aplicación lo hará ahora, pero futuras modificaciones o querys administrativos cambiarán eso)

Para cubrir las posibilidades necesitas usar algo como:

INSERT INTO tabla_prueba2
SELECT cod, nombre, 1
FROM Inserted
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:56.