SQL Server 2012 Я получаю несколько писем, когда этот триггер срабатывает при вставке записи. Если получить только один адрес электронной почты вот код:Остановить получение нескольких писем от триггера
ALTER TRIGGER [dbo].[WOInsertMail] ON [dbo].[WORKORDR]
FOR Update
AS
DECLARE @Emails NVARCHAR(MAX)
DECLARE @WRKOxml NVARCHAR(MAX)
DECLARE @WRKOrdBody NVARCHAR(MAX)
DECLARE @sub NVARCHAR(MAX)
SET @WRKOxml = CAST((
SELECT convert(varchar(10),ID) AS 'td','',
convert(varchar(20),isnull(Workordno,'')) AS 'td','',
convert(varchar(20),isnull(WODate,'')) AS 'td','',
convert(varchar(20),isnull(WOTitle,'')) AS 'td','',
convert(varchar(20),isnull(engineer,'')) AS 'td','',
convert(varchar(20),isnull(drafter,'')) AS 'td','',
convert(varchar(20),isnull(insertuser,'')) AS 'td','',
convert(varchar(20),isnull(insertdate,'')) AS 'td'
FROM inserted
FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX))
SET @WRKOrdBody ='<H3>Work Order Insert</H3>
<table border = 1>
<tr>
<th>ID</th><th>Workordno</th>
<th>WODate</th><th>WOTitle</th>
<th>Engineer</th><th>Drafter</th>
<th>InsertUser</th><th>InsertDate</th>
</tr>'
SET @WRKOrdBody = @WRKOrdBody + isnull(@WRKOxml,'') +'</table>'
set @Emails = '<html><body>' + isnull(@WRKOrdBody,'') + '</body></html>'
select @sub = 'WorkOrder #' + convert(varchar(10),ID) + ' has been inserted in WO Table on ' + convert(varchar(10),WODATE)
FROM inserted
EXEC msdb.dbo.sp_send_dbmail
@recipients = '[email protected]',
@subject = @sub,
@body = @Emails,
@body_format ='HTML'
Это похоже на триггер UPDATE. У вас есть еще один выстрел в INSERT? –
Нет. Хотелось бы, чтобы у него был огонь по вставке, но электронные письма приходили ко мне пустым –
Итак, код выше говорит «ЗАРОЖИТЬ». Вы говорите, что ваш фактический триггер говорит «FOR Insert», и что, когда вы вставляете запись, вы получаете несколько пустых писем? –