簡體   English   中英

了解表中更新的簡單方法

[英]simple way to know the updates in table

嗨,您只是想知道是否有任何方法可以知道列中是否發生了任何更新,例如Ex:Author ID,一旦列中發生了更新,便有任何簡單的方法,以便所有管理人員都應該知道新的作者更新發生在Database或通過電子郵件,我是一個新手,如果有人一步一步地幫助我,這對我在評估時真的非常有用,請對此提供幫助。

謝謝aaru

您需要創建一個觸發器

CREATE TRIGGER reminder2
ON Sales.Customer
AFTER INSERT, UPDATE, DELETE 
AS
   EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'AdventureWorks Administrator',
        @recipients = 'danw@Adventure-Works.com',
        @body = 'Don''t forget to print a report for the sales force.',
        @subject = 'Reminder';

但是,從存儲過程內部使用sp_send_dbmail是不合適的,因為它會減慢行的更新。 這意味着每次對行進行更新時,都必須等到發送電子郵件為止。

相反,您應該使用另一個表在該行上存儲操作,讓批處理作業或服務掃描該表並發送電子郵件本身。

例如:

CREATE TRIGGER SendEmailOnUpdate
    ON Author
    AFTER UPDATE
    AS
       INSERT INTO Notification(AuthorId) VALUES(updated.AuthorId);

創建一個Windows服務,該服務掃描表Notification(通知)表,一次掃描一行,並針對其中包含的數據發送電子郵件。

有關觸發器的更多信息,請參見MSDN

您可能要使用Sql觸發器來創建某些表和字段上發生的所有更新的日志。

您可能要使用觸發器內的UPDATE()函數(在線查找書籍)來測試您感興趣的字段(即作者)的更改。

實際上,在觸發器內使用sp_send_dbmail並不是很糟糕。 與MAPI xp_sendmail天不同,sp_send_dbmail只是將電子郵件排入隊列(本質上是將記錄寫入表中)。 它不會使觸發器等待電子郵件發送。 雖然SQL BOL說sp“發送電子郵件”,但成功調用的結果是消息“郵件已排隊”。

我仍然不知道會叫它從觸發,但現在我會跟dbmail考慮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM