Будет ли это менее производительным, чем делать то же самое в хранимых процессах. Вероятно, нет, но со всеми вопросами производительности единственный способ действительно знать, это проверить оба подхода с реалистичным набором данных (если у вас есть таблица с 2 000 000 записей, не тестируйте с таблицей с 100 записями!)
Тем не менее, выбор между триггером и другим методом полностью зависит от необходимости выполнения рассматриваемого действия независимо от того, как данные обновляются, удаляются или вставляются. Если это бизнес-правило, которое всегда должно происходить, несмотря ни на что, триггер - это лучшее место для него, или в конечном итоге у вас будут проблемы с целостностью данных. Данные в базах данных часто изменяются из источников, отличных от графического интерфейса.
При написании триггера есть несколько вещей, о которых вы должны знать. Во-первых, триггер срабатывает один раз для каждого пакета, поэтому при вставке одной записи или 100 000 записей триггер срабатывает только один раз. Вы не можете предполагать, что это повлияет только на одну запись. Вы также не можете предполагать, что это будет только небольшой набор записей. Вот почему так важно написать все триггеры, как будто вы собираетесь вставить, обновить или удалить миллион строк. Это означает основанную на множестве логику и отсутствие курсоров или циклов while, если это вообще возможно. Не берите хранимый процесс, написанный для обработки одной записи, и вызывайте его курсором в триггере.
Также не отправляйте электронные письма с курсора, вы не хотите останавливать все вставки, обновления или удаления, если почтовый сервер не работает.