To jest bardziej ogólne pytanie, ale motywacją tego pytania był problem, który napotkałem podczas korzystania z SQL Server.
Mam ten wyzwalacz dołączony do zdarzenia Insert w tabeli, która zawiera pewną logikę, która jako efekt uboczny spowodowałaby błąd, gdyby nie wstawiono żadnych wierszy. Po dalszym dochodzeniu odkryłem, że spust uruchamia się pomimo braku wstawienia wierszy.
Język używany w Dokumentach Microsoft na temat wyzwalaczy DML wydaje się zaprzeczać takiemu zachowaniu:
Wyzwalacze DML to specjalny rodzaj procedury składowanej, która automatycznie działa, gdy ma miejsce zdarzenie DML, które wpływa na tabelę lub widok zdefiniowany w wyzwalaczu.
Czy jest to domyślne zachowanie w DBMS? Czy istnieje szczególny powód, aby uruchomić spust, gdy nie ma to wpływu na rzędy?