Я бы разделил это на отдельные проблемы.
Во-первых, как вы обнаруживаете изменения? Самый простой - это «последний обновленный» столбец; затем вы можете выполнить запрос на выборку изменений с текущего времени и сравнить его с вашим ограничителем.
Второй вопрос - как вы выполняете этот запрос и отправляете свои электронные письма. В заголовке вашего вопроса упоминаются триггеры - это конкретные SQL Server объекты . У меня есть личная неприязнь к триггерам - они являются «побочными эффектами» и имеют тенденцию усложнять понимание кода и приводить к интересным ошибкам. В вашем случае это, вероятно, плохое решение - вы хотите, чтобы триггеры были невероятно быстрыми, поскольку они задерживают ваши изменения данных во время их выполнения. Отправка электронной почты, вероятно, медленнее, чем вы хотите.
Простейшим вариантом, вероятно, является использование задания agent , запланированного на любую нужную частоту. Опять же, производительность может быть проблемой здесь - выполнение запроса с высокой нагрузкой каждые 30 секунд может значительно замедлить вашу базу данных.