1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/****** Object: Trigger [dbo].[APX_TG_UPD_F_DOCLIGNE_IL] Script Date: 04/15/2013 15:55:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[APX_TG_UPD_F_DOCLIGNE_IL] ON [dbo].[F_DOCLIGNE] FOR UPDATE AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
IF EXISTS(SELECT 'a' FROM INSERTED WHERE AR_Ref IN ('A_MCO','A_PRD','A_PMD'))
BEGIN
DECLARE @dopiece varchar(9);
DECLARE @ligne int;
DECLARE @ligneEnCours int;
SET @dopiece = (SELECT DO_Piece FROM inserted);
IF EXISTS(SELECT TOP 1 DL_Ligne FROM APX_TG WHERE DO_Piece = @dopiece)
SELECT DL_Ligne INTO #tmp FROM APX_TG WHERE DO_Piece = @dopiece;
SET @ligneEnCours = (SELECT DL_Ligne FROM INSERTED)
IF UPDATE(Profil_Type)
OR UPDATE(Nb_Jours)
OR UPDATE(Prix_de_vente_journalier)
BEGIN
IF ((SELECT ISNULL(Profil_Type,'NULL') FROM inserted) = 'NULL')
OR ((SELECT Nb_Jours FROM inserted) = 0)
OR ((SELECT Prix_de_vente_journalier FROM inserted) = 0)
BEGIN
RAISERROR(82045,11,1);
END
ELSE
BEGIN
IF EXISTS(SELECT TOP 1 DL_Ligne FROM APX_TG WHERE DO_Piece = @dopiece)
BEGIN
DELETE FROM F_DOCLIGNE WHERE DO_Piece = @dopiece AND DL_Ligne IN (SELECT DL_Ligne FROM #tmp) AND DL_Ligne <> @ligneEnCours;
DELETE FROM APX_TG WHERE DO_Piece = @dopiece;
END
END
END
END;
END TRY
BEGIN CATCH
DELETE FROM F_DOCLIGNE WHERE DO_Piece = @dopiece AND DL_Ligne IN (SELECT DL_Ligne FROM APX_TG WHERE DO_Piece = (SELECT DO_Piece FROM inserted));
DELETE FROM APX_TG WHERE DO_Piece = (SELECT DO_Piece FROM inserted) ;
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT @ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
-- Use RAISERROR inside the CATCH block to return
-- error information about the original error that
-- caused execution to jump to the CATCH block.
RAISERROR (@ErrorMessage, -- Message text.
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
END CATCH;
END;
GO |
Partager