Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/09/2009, 13:19
nash_bs_as
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 15 años, 3 meses
Puntos: 0
creacion de trigger en SQL Server

Hola que tal, les cuento que quiero realizar un trigger de historico, es decir
que cuando el empleado cambie de posicion, dispare sobre la tabla "his_cambio_pos" los datos, es decir que se guarden alli, necesito saber su ayuda, porque nunca arme uno.


empleado
-------------------------------------------------------------------------------------------------------
id_empleado Numeric número de legajo del empleado
fec_alta DateTime fecha de incorporación
fec_baja DateTime fecha de baja del empleado a la empresa
ult_cambio_pos DateTime fecha de cambio de puesto
id_posicion Int codigo identificador del puesto del empleado
salario Numeric salario en pesos del empleado
id_persona Numeric codigo identificador de los datos personales
id_sucursal SmallInt codigo identificador de la sucursal

posicion
-------------------------------------------------------------------------------------------------------
id_posicion Int codigo posicion del empleado
nombre_posicion VarChar (30) mombre de la posicion
id_cargo Int codigo identificador del cargo
id_departamento Int codigo identificador del departamento
status_pos VarChar (15) estado de la posicion
borrado Bit identifica si la posicion fue borrada


his_cambio_pos
-------------------------------------------------------------------------------------------------------
id_empleado Numeric numero de legajo
id_pos_anterior Int posicion de cargo anterior
id_pos_nueva Int posicion de cargo actual
observaciones VarChar (150) observaciones
fecha_cambio DateTime fecha del cambio de cargo


Yo nunca arme un trigger, pero no se si esta bien, estoy trabajando en SQL-Server 2005




CREATE TRIGGER historico-posicion ON empleado
WITH EXECUTE AS CALLER
INSTEAD OF UPDATE

AS
BEGIN

SET NOCOUNT ON; --impide que se generen mensajes de texto con cada instrucción
IF UPDATE(id_posicion) -- Solo si se actualiza el id de la posición
{
BEGIN
INSERT INTO his_cambio_pos
(id_empleado
,id_pos_anterior
,fecha_cambio)
SELECT Id_empleado, id_posicion, getdate()
FROM INSERTED
END
}
END
GO



la tabla empleados, se relaciona a posicion y esta a su vez a his_cambio_pos

desde ya muchas gracias
Ernesto