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)
BEGINDECLARE 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 = @cliCodFETCH NEXT FROM Del_Cursor INTO @cliCod, @altaTrip;
end
CLOSE Del_Cursor
DEALLOCATE Del_CursorEND
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