Я думал, что "после удаления" означало, что триггер не срабатывает до тех пор, пока удаление не произойдет, но вот моя ситуация ...
Я сделал 3, почти идентичных SQL CLR после триггеров удаления в C #, которые прекрасно работали около месяца. Внезапно один из трех перестал работать, когда на нем был запущен инструмент автоматического удаления.
Перестав работать, я имею в виду, записи не могут быть удалены из таблицы через клиентское программное обеспечение. Отключение триггера приводило к тому, что удаление разрешалось, но повторное включение мешало возможности удаления.
Итак, мой вопрос: как это может быть? Возможно ли, что инструмент, используемый на нем, уничтожил память? Похоже, даже если триггер сгенерировал исключение, если это ПОСЛЕ удаления, разве записи не должны исчезнуть?
Все триггеры выглядят так:
ALTER TRIGGER [sysdba].[AccountTrigger] ON [sysdba].[ACCOUNT] AFTER DELETE AS
EXTERNAL NAME [SQL_IO].[SQL_IO.WriteFunctions].[AccountTrigger]
GO
Триггер CLR делает один выбор и одну вставку в другую базу данных. Я еще не знаю, есть ли какие-либо ошибки в SQL Server Mgmt Studio, но обновлю вопрос после того, как узнаю.
UPDATE:
Хорошо после повторного выполнения того же кода триггера, описанного выше, все работает снова, поэтому я никогда не узнаю, что произойдет, если возникнет какая-либо ошибка SSMS.
Кроме того, нигде в коде триггера нет вызова для отката.