Мы используем базу данных SQL Server CE. Я понимаю, что существуют ограничения на типы триггеров, которые работают с базой данных SQL Server CE. Например, триггер в таблице SQL Server CE не может вызвать хранимую процедуру, но он может обновить / вставить в другую таблицу.
Что нам нужно, так это триггер для отправки уведомления по электронной почте, когда в таблицу вносятся изменения (вставка / обновление / удаление). Мы знаем, что если мы установим триггер непосредственно на стол для отправки электронного письма (EXEC msdb.dbo.sp_send_dbmail), то вы получите ошибку при попытке нажать на таблицу. Очевидно, что SQL Server CE не поддерживает триггер для отслеживаемой таблицы, который запускает хранимую процедуру.
Чтобы обойти это, мы установили триггер на таблицу, чтобы вставить строку в другую таблицу (_table_changes), которая не отслеживается как часть синхронизации CE. В этой таблице (_table_changes) мы установили триггер для отправки уведомления по электронной почте, который, как мы надеялись, обойдет проблему с отслеживаемым триггером таблицы CE, который не может запустить хранимую процедуру, и, в свою очередь, по электронной почте.
Однако, несмотря на то, что таблица не является частью push / pull-синхронизации, если мы включим триггер электронной почты, синхронизация не будет работать. Почему это? Как CE может знать, что таблица, которая не является частью синхронизации, имеет триггер, который запускает хранимую процедуру для отправки электронной почты?