Bazy danych są zorientowane na ustawienia i wyzwalacze nie różnią się. Wyzwalacz zostanie uruchomiony, gdy zostanie wykonana dana czynność, a operacja może wpłynąć na wiele wierszy. Zatem, pytanie jest mylące. Może być wstawionych wiele wierszy.
SQL Server udostępnia dwie specjalne tabele dla wyzwalaczy AFTER o nazwach inserted
i deleted
, które reprezentują wiersze wstawione lub usunięte przez działanie i są skonstruowane identycznie jak tabela, której dotyczy problem. Wyzwalacz aktualizacji może zapełnić zarówno inserted
, jak i deleted
, natomiast wyzwalacz wstawiania zapełniłby tylko tabelę inserted
.
Z opinii:
ale odbiorca e-mail zostanie ustalona na podstawie wartości w drugiej tabeli, gdzie identyfikator klucza obcego znajduje się w pierwszej tabeli (co jest jednym z wyzwalaczem
Odpowiedź na to pytanie polega na użyciu tabeli inserted
(która, jak można zakładać, może mieć wiele wierszy), aby przechodzić przez kolejne wiersze i wysyłać wiadomość e-mail, ale nie polecam używania logiki e-mail w wyzwalaczu. , Polecam umieszczenie tej logiki w procedurze przechowywanej i wysłanie e-maila z t kapelusz.
Dla porównania: Create Trigger
@john: Produkt nosi nazwę "SQL Server", a nie "MSSQL". "MSSQL" można łatwo pomylić z "MySQL". Ponadto, pytając o pytanie SQL Server, sugeruję użycie znacznika "sql-server". "sql" dotyczy ogólnych pytań dotyczących języka SQL. –
Ok dzięki za notatkę. Zrobi to. – johnshaddad
Czy Twoje pytanie dotyczy tylko zdefiniowania wyzwalacza, czy też jest to, jak napisać wyzwalacz, którego można użyć do działania w dotkniętych wierszach? Jeśli później, powinieneś rozważyć zmianę swojego pytania. – Thomas