【发布时间】:2013-10-13 10:45:48
【问题描述】:
/* This trigger works for one row, how to make it work on multiple rows ?*/
CREATE TRIGGER SendMail ON contract
AFTER INSERT, UPDATE, DELETE
AS
SET NOCOUNT ON
IF ( UPDATE(Contract_Status))
Begin
/* This comparison works for one row, how to make it work on multiple rows ?*/
IF ((SELECT Contract_Status FROM INSERTED) <> (select Contract_Status FROM DELETED))
Begin
DECLARE @body NVARCHAR(MAX) = N'';
SELECT @body += CHAR(13) + CHAR(10) + RTRIM(Contract_Ref_1) FROM inserted;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AdminProfile',
@recipients = 'XXXXX@live.be',
@body = @body,
@subject = 'Status Update BELUX_OEM';
End
End
【问题讨论】:
-
“处理多行”是什么意思?
-
当我尝试运行将更新合同表中的多行的存储过程时,我收到一个错误。当我只更新合同表中的一行时,它可以工作。
-
解释比较应该做什么。特别是在插入或删除的情况下(更新很明显)。
标签: sql-server tsql triggers