Jacek Michalski Entrepreneur
Temat: Trigger dbo.ZAMOWIENIE a grupowa zmiana statusów
Witam,napisałem trigger na tabeli ZAMOWIENIE, który po zmianie statusu na określony ma dodawać pewną wartość do POLE2
ALTER TRIGGER [dbo].[tm_status_helper]
ON [dbo].[ZAMOWIENIE]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @id_zamowienia numeric(18, 0), @typ tinyint, @trybrejestracji tinyint, @status_zam varchar(1), @pole2 varchar(100)
DECLARE cs_update_zamowienie CURSOR FOR SELECT ID_ZAMOWIENIA, TYP, TRYBREJESTRACJI, STATUS_ZAM, POLE2 FROM inserted
OPEN cs_update_zamowienie
FETCH NEXT FROM cs_update_zamowienie INTO @id_zamowienia, @typ, @trybrejestracji, @status_zam, @pole2
WHILE @@FETCH_STATUS = 0 BEGIN
--@trybrejestracji 0 -> glowny rejestr zam; @typ 1 -> ZO
IF (@typ = 1 AND @trybrejestracji = 0 and @status_zam = 'M' and @pole2 = '') BEGIN
UPDATE ZAMOWIENIE
SET POLE2 = 'R'
WHERE ID_ZAMOWIENIA = @id_zamowienia
END
FETCH NEXT FROM cs_update_zamowienie INTO @id_zamowienia, @typ, @trybrejestracji, @status_zam, @pole2
END
CLOSE cs_update_zamowienie
DEALLOCATE cs_update_zamowienie
END
Wszystko działa Ok w przypadku zmiany statusu per zamówienie. W przypadku grupowej zmiany statusów niestety nie. Czy ktoś ma może wiedzę odnośnie logiki grupowych updateów i dlaczego powyższe rozwiązanie nie działa? W związku z tym, że na tej tabeli istnieje już kilka napisanych przez wapro triggerów (zaszyfrowanych i nie da się ich podejrzeć) to czy powyższy trigger jest bezpieczny?
Z góry dziękuję za pomoc.
Pozdrawiam,
Jacek Michalski