【问题标题】:Insert trigger that compares values and sends mail插入比较值并发送邮件的触发器
【发布时间】:2015-10-08 10:13:25
【问题描述】:

目前,我已经测试了这个触发器,它会在每次插入表格时向我发送一封电子邮件。

CREATE TRIGGER dr_insert ON data_record 
    AFTER INSERT 
AS 

EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'TEST',
        @recipients = 'azfarkashif@hotmail.com',
        @body = 'New data uploaded',
        @subject = 'TriggerTest';

GO

如何自定义此触发器,以便它考虑新插入的行中的列,比较它(例如 temp > 70 || temp

【问题讨论】:

    标签: sql sql-server stored-procedures triggers


    【解决方案1】:

    您需要使用 inserted 表。在 SQL 中也称为魔术表。

    CREATE TRIGGER dr_insert ON data_record 
        AFTER INSERT 
    AS 
    BEGIN
        DECLARE @temp INT
    
        SET @temp = (SELECT column FROM inserted)
    
        IF @temp > 70 || @temp <40
            BEGIN
                EXEC msdb.dbo.sp_send_dbmail
                @profile_name = 'TEST',
                @recipients = 'azfarkashif@hotmail.com',
                @body = 'New data uploaded',
                @subject = 'TriggerTest';
            END
    END
    GO
    

    【讨论】:

    • 目前,我正在使用这个。 SET @temp=(SELECT TOP 1 Value FROM data_record WHERE Value_Type = 'DCU Battery' ORDER BY Value_ID DESC) 认为降序排列的最高值将是刚刚插入的值
    • 另外,如果我想在电子邮件正文中打印临时变量,我该怎么做?我正在尝试“@body = '温度警报!温度是' + @temp”,但它不起作用
    • 它不工作,当您将 int 附加到 string 时,您一定会遇到数据类型转换错误。这将工作 - @body = 'Temperature alert! Temperature is' + cast(@temp as varchar)
    • 工作。非常感谢! :)
    • 很抱歉一直打扰您,但是您知道从存储过程调用外部 API 的任何方法吗?如果你能用你可能用过的任何链接联系我,那将很有帮助!
    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多