[英]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.