在SQL Server数据库中更改单元格值时获得通知
本文关键字:通知 单元格 Server SQL 数据库 | 更新日期: 2023-09-27 18:15:03
我想在数据库表中发生某些更改时得到通知。考虑一下这种情况:我想在一行中的列将其值更改为5时执行某个操作。我怎样才能做到呢?我正在使用c#和实体框架访问数据库。
为此,您必须创建一个调度作业,该作业将连续(如间隔5分钟)ping数据库并像Facebook的通知栏一样通知您。
还可以在该表上写入trigger,它将插入/更新通知表,并从那里获得notify。
简短的回答是,您可能应该尝试在SQL server之外管理这个。我必须假设您有一些应用程序逻辑在SQL server之外执行,这是更新的来源。理想情况下,通知逻辑应该在数据库更新之前或之后放置在应用程序层中。
如果你不能做到这一点,我可以提供三个其他的选择:
-
polling
构建一个服务,在循环中从SQL server读取值。循环应该定期读取该值,并执行通知。大多数工程师都避免轮询,因为从最佳实践的角度来看,由于向数据库添加持久负载,因此通常与此相反。虽然应该避免轮询,但它在现场非常普遍。 -
msmq
通过存储过程更新该值,当该值为5
时,使用本文向MSMQ发送消息。您将需要编写一个服务来使用MSMQ消息并处理通知。您可以使用使用MSMQ传输的WCF服务来简化此操作。 -
email
您在更新存储过程中使用sp_send_dbmail
发送电子邮件,并构建必要的通知消费者。应该注意的是,如果以电子方式使用电子邮件,此方法可能还涉及轮询。您可以通过使用IMAP
IDLE
来处理电子邮件通知来避免这种情况。尝试MailKit
报告服务显然也提供通知,但我不熟悉它们
using(var context = new FooEntities)
{
try
{
var customer = context.Customers.First(i=> i.CustomerID = 23);
customer.Name = "Bar";
context.SaveChanges();
//Write your notification code here
}
catch(Exception ex)
{
//Write notification along with the error you want to display.
}
}
在google中搜索有许多不同的方式显示通知