我试图在SQL Server数据库中使用INSERT TRIGGER。这是我的第一个触发器,我想用它来发送电子邮件,如果在插入的行中满足某个值:
CREATE TRIGGER dbo.SEND_MAIL
ON dbo.table
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON
IF (SELECT field1 FROM INSERTED) = '1'
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'mail address',
@profile_name = 'profile1',
@subject = 'subject',
@body = 'body text';
END
END
如果我尝试使用这些电子邮件参数执行send_dbmail存储过程,电子邮件将被完美地发送出去。但不是在触发器。
我看到符合IF语句(field1 = '1')条件的值被插入到表中。但不明白为什么不工作在触发器。
我尝试在IF中使用"LIKE"代替"equal",但是没有成功。
有什么提示让它工作吗?
提前感谢你,
您可以在插入表中有许多记录,因此我建议您这样写:
IF exists (SELECT field1 FROM INSERTED where field1='1')
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'mail address',
@profile_name = 'profile1',
@subject = 'subject',
@body = 'body text';
END