2015-10-08 54 views
0

目前,我測試了這個觸發器,它在表中的每個插入位置向我發送一封電子郵件。插入比較值併發送郵件的觸發器

CREATE TRIGGER dr_insert ON data_record 
    AFTER INSERT 
AS 

EXEC msdb.dbo.sp_send_dbmail 
     @profile_name = 'TEST', 
     @recipients = '[email protected]', 
     @body = 'New data uploaded', 
     @subject = 'TriggerTest'; 

GO 

如何自定義,使其從新插入的行會考慮此列觸發,進行比較(如溫度> 70 ||溫度< 40),如果條件滿足,然後將我的郵件嗎?

回答

0

您需要使用插入表。它也被稱爲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 = '[email protected]', 
      @body = 'New data uploaded', 
      @subject = 'TriggerTest'; 
     END 
END 
GO 
+0

目前,我正在使用它。 SET @ temp =(SELECT TOP 1 Value FROM data_record WHERE Value_Type ='DCU Battery'ORDER BY Value_ID DESC)認爲按降序排列的最高值將是剛剛插入的值 –

+0

另外,如果我想打印溫度在電子郵件正文中變量,我該怎麼做? 我正在嘗試「@body ='溫度警報!溫度是'+ @temp」,但它不起作用 –

+0

它不起作用,因爲您將* int *附加到*字符串*,您必須獲取數據類型轉換錯誤。這將工作 - '@body ='溫度警報!溫度是'+ cast(@temp as varchar)' – niksofteng