Это слишком длинный комментарий.
Вы знаете ответ, потому что вы отметили вопрос «триггер». Вы просите других людей написать свой код для вас, когда вы даже не пытались написать его? Вы должны попробовать себя.
На мой взгляд, отправка электронной почты через триггеры опасна. Я предпочитаю подход на основе API, который использует хранимые процедуры. Ошибки в триггерах могут привести к блокировке базы данных.
Вместо того, чтобы вставлять строку непосредственно в таблицу и иметь триггер базы данных, выполните электронную почту, вызовите хранимую процедуру, чтобы вставить строку в A
, а затем отправить электронное письмо в хранимой процедуре. Таким образом, хранимая процедура будет выглядеть примерно так:
create procedure usp_InsertAndEmail (
@planNo ??,
@parcelNo ??,
@id
) as
begin
declare @email varchar(255);
insert into a(planNo, parcelNo, id)
values (@planNo, @parcelNo, @id);
declare cursor b_cursor for
select email
from table b
where b.planNo = @planNo and b.parcelNo = @parcelNo;
open cursor b_cursor;
fetch next from b_cursor into @email;
while (@@fetch_status = 0)
begin
-- do email send however you do it
fetch next from b_cursor into @email;
end;
close b_cursor;
deallocate b_cursor;
end;
Этот подход также позволяет проверить наличие ошибок при отправке по электронной почте.
Это может быть сделано с помощью триггера вставки, которая выполняет sp_send_dbmail (https://msdn.microsoft.com/en-us/library/ms190307.aspx) в цикле для каждого получателя. Если список получателей велик, было бы лучше отправить асинхронные письма из обработчика Service Broker, активированного сообщением, отправленным с помощью триггера. –