dwa triggery tego samego typu na jednej tabeli

0

Używam MSSQL Server 2008
Na jednej tabeli mam dwa triggery FOR INSERT, UPDATE

Każdy z nich ma inne warunki i robi update na tejże tabeli na innych polach (każdy z nich zawiera CURSOR oczywiście o innych nazwach)

I mam taki problem, że gdy oba triggery są aktywne to zawsze zgłasza błąd, że nie można utworzyć nowego cursora bo taki już istnieje. A gdy działa tylko jeden trigger to wszystko się wykonuje prawidłowo.

Triggery wyglądają mniej więcej tak

CREATE CURSOR FOR
OPEN CURSOR
...

UPDATE tabela


CLOSE CURSOR
DEALLOCATE CURSOR

I tu mam pytanie: czy to działa tak, że gdy jeden trigger wykonuje UPDATE (czyli jest wewnątrz cursora) to wtedy ten update wywoła działanie drugiego triggera a tamten też zrobi update, co z kolei wywoła kolejny raz ten pierwszy trigger i tym samy będzie tworzył kolejny raz ten sam kursor.

0

wsadź to wszystko w jeden trigger

0
Misiekd napisał(a)

wsadź to wszystko w jeden trigger

Oczywiście, tak też można zrobić, ale bardziej czytelne by było gdyby każdy trigger działał osobno.
A poza tym, to na pewno Microsoft przewidział taką sytuację i da się to jakoś obsługiwać.

0

Możesz spróbować coś takiego:

IF TRIGGER_NESTLEVEL(OBJECT_ID('TIU_ZAMOWIENIE')) > 1 RETURN

1 użytkowników online, w tym zalogowanych: 0, gości: 1