Trigger with Cursor

Trigger with cursor

USE [Gestio]
GO
/****** Object: Trigger [dbo].[SetAxAltaTripartita] Script Date: 28/04/2017 10:02:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
— =============================================
— Author: <Author,,Name>
— Create date: <Create Date,,>
— Description: <Description,,>
— =============================================
ALTER TRIGGER [dbo].[SetAxAltaTripartita]
ON [dbo].[docEncomienda]
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
— SET NOCOUNT ON added to prevent extra result sets from
— interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @cliCod AS NVARCHAR(15);
DECLARE @altaTrip AS BIT;
DECLARE @del AS BIT;

IF EXISTS (SELECT cliCod FROM DELETED)
BEGIN

DECLARE Del_Cursor CURSOR FOR SELECT cliCod, documentoRecibido FROM DELETED;

OPEN Del_Cursor;
FETCH NEXT FROM Del_Cursor INTO @cliCod, @altaTrip;

WHILE @@fetch_status = 0
begin
UPDATE Dynamics.dbo.CUSTTABLE
SET ALTATRIPARTITA = @altaTrip
WHERE ACCOUNTNUM = @cliCod

FETCH NEXT FROM Del_Cursor INTO @cliCod, @altaTrip;
end
CLOSE Del_Cursor
DEALLOCATE Del_Cursor

END

IF EXISTS (SELECT cliCod FROM INSERTED)
BEGIN
DECLARE Ins_Cursor CURSOR FOR SELECT cliCod, documentoRecibido, del FROM INSERTED;

OPEN Ins_Cursor;

FETCH NEXT FROM Ins_Cursor INTO @cliCod, @altaTrip, @del;

WHILE @@fetch_status = 0
begin
IF(@del = 0)
begin
UPDATE Dynamics.dbo.CUSTTABLE
SET ALTATRIPARTITA = (@altaTrip)
WHERE ACCOUNTNUM = @cliCod
end
ELSE
begin
UPDATE Dynamics.dbo.CUSTTABLE
SET ALTATRIPARTITA = 0
WHERE ACCOUNTNUM = @cliCod
end
;

FETCH NEXT FROM Ins_Cursor INTO @cliCod, @altaTrip, @del;
end
CLOSE Ins_Cursor
DEALLOCATE Ins_Cursor
END
END

Deja un comentario