在SQL Server数据库中更改单元格值时获得通知

本文关键字:通知 单元格 Server SQL 数据库 | 更新日期: 2023-09-27 18:15:03

我想在数据库表中发生某些更改时得到通知。考虑一下这种情况:我想在一行中的列将其值更改为5时执行某个操作。我怎样才能做到呢?我正在使用c#和实体框架访问数据库。

在SQL Server数据库中更改单元格值时获得通知

为此,您必须创建一个调度作业,该作业将连续(如间隔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中搜索有许多不同的方式显示通知