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

Trigger o desencadenador

Estas en el tema de Trigger o desencadenador en el foro de SQL Server en Foros del Web. hola a todos....bueno soy nueva en este sitio se me presento una consulta yo se que se pueden hacer trigger en sql server pero tambien ...
  #1 (permalink)  
Antiguo 13/12/2010, 15:32
 
Fecha de Ingreso: diciembre-2010
Mensajes: 14
Antigüedad: 13 años, 4 meses
Puntos: 0
Trigger o desencadenador

hola a todos....bueno soy nueva en este sitio

se me presento una consulta
yo se que se pueden hacer trigger en sql server
pero tambien se que la extructura es distinta....alguien sabe como es?
lo que necesito es un al minuti se actualizar o eliminar o insertar en la base de datos un registro este ingrese esos datos a mi tabla nueva tbl_historial y ademas unos de estos datos es fk

alguien me podria decir como lo ago y mostrarme un ejemplo..

plisss

eso seria

gracias
  #2 (permalink)  
Antiguo 13/12/2010, 15:58
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Trigger o desencadenador

Seria tan sencillo como generar un trigger para DELETE, INSERT o UPDATE y los datos contenidos en INSERTED, UPDATED, pasarlos a tu historico.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 13/12/2010, 16:00
 
Fecha de Ingreso: diciembre-2010
Mensajes: 14
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Trigger o desencadenador

y como lo debo hacer???
  #4 (permalink)  
Antiguo 13/12/2010, 16:08
 
Fecha de Ingreso: diciembre-2010
Mensajes: 14
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Trigger o desencadenador

las tablas implicadas en esto son
tabla:
tbl_usuario

campos:
usu_codigo (pk)
usu_pri_cod fk)
usu_nombre
usu_apellido
usu_cargo

tabla tbl_privilegios

campos
pri_codigo(pk)
pri_descripcion


bueno yo cree una tabla llamada tbl_hist_usuario que contiene los mismos campos de la tabla usuario y ademas tiene un campo fecha para que este registre la fecha del sistema

eso deceo hacer


ahora mi me salto la duda.....yo no puedo traer el dato de pri_descripcion y los campos de usuario a mi tabla historial???...me parese que no, pero no estoy segura
  #5 (permalink)  
Antiguo 13/12/2010, 17:01
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Trigger o desencadenador

¿leiste ya tu ayuda en linea para tratar de comprender como es que trabaja un trigger?
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 14/12/2010, 20:31
 
Fecha de Ingreso: diciembre-2010
Mensajes: 14
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Trigger o desencadenador

lo hice asi, pero me aparese un error gigante


CREATE TRIGGER historial_usuario
on tbl_usuario
for INSERT,DELETE,UPDATE
AS
BEGIN
Select @usu_pri_cod = (Select usu_pri_codigo From Inserted )
select @usu_nombre=(select usu_nombre from Inserted)
Select @usu_apellido = (Select usu_apellido From Inserted )
select @usu_cargo=(select usu_cargo from Inserted)
Select @ussername = (Select ussername From Inserted )
select @usu_password=(select usu_password from Inserted)
select @usu_email=(select usu_email from Inserted)
select @fecha=(select sysdate from Inserted)

INSERT INTO tbl_hist_usuario(hist_usu_priv_det,hist_usu_nombre ,hist_usu_apellido,hist_usu_cargo,hist_ussernam e,hist_usu_password,hist_usu_email,hst_usu_fecha)
values( @pri_detalle,@usu_nombre,@usu_apellido,@usu_cargo, @ussername,@usu_password,@usu_email,@fecha);

END
  #7 (permalink)  
Antiguo 15/12/2010, 07:40
 
Fecha de Ingreso: diciembre-2010
Mensajes: 14
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Trigger o desencadenador

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER hist_usuario
ON tbl_usuario
AFTER INSERT,DELETE,UPDATE
AS
BEGIN

Select pri_cod=(Select usu_pri_codigo From Inserted)
select nombre=(select usu_nombre from Inserted)
Select apellido = (Select usu_apellido From Inserted )
select cargo=(select usu_cargo from Inserted)
Select username = (Select ussername From Inserted )
select password=(select usu_password from Inserted)
select email=(select usu_email from Inserted)
select fecha=(select sysdate from dual)

SET NOCOUNT ON;

INSERT INTO tbl_hist_usuario
(hist_usu_priv_det,hist_usu_nombre,hist_usu_apelli do,hist_usu_cargo,hist_ussername,hist_usu_passw ord,hist_usu_email,hst_usu_fecha)
values
(pri_cod,@usu_nombre,@usu_apellido,@usu_cargo,@usu _username,@usu_password,@usu_email,@fecha);



END
GO

--------------------------------------------

este es el error que aparese

Mens 137, Nivel 15, Estado 1, Procedimiento hist_usuario, Línea 7
Debe declarar la variable escalar "@pri_cod".
Mens 128, Nivel 15, Estado 1, Procedimiento hist_usuario, Línea 21
El nombre "pri_cod" no es válido en este contexto. Las expresiones válidas son constantes, expresiones de constantes y, en algunos contextos, variables. No se permiten nombres de columna.
  #8 (permalink)  
Antiguo 15/12/2010, 20:31
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Trigger o desencadenador

¿y porque utilizar variables?

INSERT INTO HISTORICO
SELECT * FROM INSERTED
__________________
MCTS Isaias Islas

Etiquetas: desencadenador, 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 11:36.