14/09/2009, 13:19
|
| | 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 |