Hola as todos
tengo tres trigger
TRIGGER TGGPSPCPINSERT
TRIGGER TGGPSPCPUPDATE
TRIGGER TGGPSPCPDELETE
Por cada sentencia SQL el trigger hace diferentes cosas, la pregunta es la
siguiente: ¿ puedo yo unificar los 3 triggers en uno solo y ponerle algo así
como un CASE para el INSERT, un Case para el UPDATE y un CASE para el
DELETE.
Me pueden colaborar con algun ejemplo por favor?
CREATE TRIGGER TGGPSPCPINSERT
ON IV00101
FOR INSERT
AS
-
-
If @@Rowcount = 0
Return
-
alguna manera
-
IF UPDATE (ITEMNMBR) OR UPDATE (ITEMDESC)
BEGIN
IF ((SELECT ITMCLSCD FROM Inserted) = '1_MP FORRO') OR ((SELECT ITMCLSCD
FROM Inserted) = '1_MP TELAS') OR
((SELECT ITMCLSCD FROM Inserted) = '4_INS. FAB') OR ((SELECT ITMCLSCD
FROM Inserted) = '4_INS. TER')
BEGIN
-
-
INSERT INTO TBLTEMPORALGPSPCP (CODI_MATE_GRUPO, CODI_MATE_SUBGRUPO,
CODI_UNID_MEDI_PLAN,
CODI_UNID_MEDIDA, CODI_MATE_REFERENCIA, NOMB_MATE_REFERENCIA,
TIPO_MOVIMIENTO)
SELECT SUBSTRING(Ins.ITEMNMBR, 1, 2) AS CODI_MATE_GRUPO,
SUBSTRING(Ins.ITEMNMBR, 3, 2) AS CODI_MATE_SUBGRUPO,
B.UOMSCHDL AS CODI_UNID_MEDI_PLAN, C.UOFM AS CODI_UNID_MEDIDA,
Ins.ITEMNMBR AS CODI_MATE_REFERENCIA,
Ins.ITEMDESC AS NOMB_MATE_REFERENCIA, '0' AS TIPO_MOVIMIENTO
FROM Inserted Ins INNER JOIN IV40201 B
ON Ins.UOMSCHDL = B.UOMSCHDL INNER JOIN IV40202 C ON
Ins.UOMSCHDL = C.UOMSCHDL INNER JOIN
IV40400 D ON Ins.ITMCLSCD = D.ITMCLSCD
WHERE (D.ITMCLSCD = '1_MP FORRO') OR (D.ITMCLSCD = '1_MP TELAS') OR
(D.ITMCLSCD = '4_INS. FAB') OR (D.ITMCLSCD = '4_INS.
TER')
-
datos
-
INSERT INTO TBLAUDITORIAGPSPCP (CODI_MATE_GRUPO, CODI_MATE_SUBGRUPO,
CODI_UNID_MEDI_PLAN,
CODI_UNID_MEDIDA, CODI_MATE_REFERENCIA, NOMB_MATE_REFERENCIA, ITMCLSCD,
ITMCLSDC, TIPO_MOVIMIENTO, ESTADO, FECHA)
SELECT SUBSTRING(Ins.ITEMNMBR, 1, 2) AS
CODI_MATE_GRUPO,SUBSTRING(Ins.ITEMNMBR, 3, 2)
AS CODI_MATE_SUBGRUPO, B.UOMSCHDL AS CODI_UNID_MEDI_PLAN, C.UOFM AS
CODI_UNID_MEDIDA, Ins.ITEMNMBR AS CODI_MATE_REFERENCIA, Ins.ITEMDESC AS
NOMB_MATE_REFERENCIA, D.ITMCLSCD, D.ITMCLSDC, 'INSERSIÓN' AS
TIPO_MOVIMIENTO, 'COPIADO'
AS ESTADO, GETDATE() AS FECHA
FROM Inserted Ins INNER JOIN IV40201 B
ON Ins.UOMSCHDL = B.UOMSCHDL INNER JOIN IV40202 C ON
Ins.UOMSCHDL = C.UOMSCHDL INNER JOIN
IV40400 D ON Ins.ITMCLSCD = D.ITMCLSCD
WHERE (D.ITMCLSCD = '1_MP FORRO') OR (D.ITMCLSCD = '1_MP TELAS') OR
(D.ITMCLSCD = '4_INS. FAB') OR (D.ITMCLSCD = '4_INS.
TER')
-
-
IF ((SELECT ITMCLSCD FROM Inserted) = '1_MP FORRO') OR ((SELECT ITMCLSCD
FROM Inserted) = '1_MP TELAS')
BEGIN
EXEC msdb.dbo.sp_start_job @job_name = 'JOBGPSPCPMATERIASPRIMAS'
END
IF ((SELECT ITMCLSCD FROM Inserted) = '4_INS. FAB') OR ((SELECT ITMCLSCD
FROM Inserted) = '4_INS. TER')
BEGIN
EXEC msdb.dbo.sp_start_job @job_name = 'JOBGPSPCPINSUMOS'
END
END
END
GO
Leer las respuestas