【问题标题】:Is there a way to trigger an event when other users update to a table?当其他用户更新到表时,有没有办法触发事件?
【发布时间】:2017-03-26 05:27:39
【问题描述】:

有没有办法在网络中的其他用户更新或向 SQL 表中插入记录时触发事件?

我可以每隔几秒钟从数据库中读取一次表格,然后比较数据以查看是否存在差异,但这似乎会占用大量资源。


也许,我应该提到我正在使用 C#/WinForm 和 SQL 数据库,尽管我已经标记了它。


我已经看过 SQL 触发器,但它是否也需要读取触发器表,这可能是资源密集型的?我正在寻找更多在后台运行的小程序/服务,当用户对数据库进行更改时,触发它。然后,前台应用程序可以检查服务以查看是否进行了更改。我是不是想的太复杂了?

【问题讨论】:

  • 是的,您可以为表创建触发器。您可以查看此问题的已接受答案:stackoverflow.com/questions/741414/…
  • 你想在触发器中做什么......只是检查并记录更改或阻止更改?
  • @mako,该链接适用于 VB,而且它在概念上与我在问题中所说的相似,我试图避免这样做。
  • @Aamir 各种事情,例如刷新 gridview 以显示新的更新数据、在保存记录之前检查更改等。
  • 如果您想收到任何更改的通知,那么您可以在 ADO .NET 中使用 SqlDependency。这样你就可以更新 gridview 等。但是如果你想防止基于某些条件的更改,那么你可以在 sql server 中使用触发器

标签: c# sql winforms events networking


【解决方案1】:

如果要完成的处理可以完全用 SQL(或其他语言,但在数据库内部)编写,那么您可以使用trigger

在插入/更新/删除数据时在数据库上执行触发代码。具体可以做什么以及可以使用哪种语言取决于具体的数据库,但大多数数据库都支持触发器的概念。

【讨论】:

    【解决方案2】:

    打开与服务器的连接并每隔几秒钟读取一次是多余的。 此外,当您有多个用户每隔几秒都会尝试与您的数据库连接时,您将遇到疯狂的流量......

    正如 6502 所说,触发器是要走的路。 msdn 中有一个不错的小article

    【讨论】:

      【解决方案3】:

      在阅读了 SqlDependency 和 Trigger 之后,它们似乎都依赖于定期轮询数据库。我认为这最终会影响性能。所以我决定研究有关 Windows 服务的代码。希望编写 Windows 服务,我可以存储有关刚刚保存的记录的信息。而且我可以轮询它以查看我需要重新加载哪个表。我希望我没有把事情复杂化......

      谢谢大家的回复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-02
        • 2018-10-25
        • 2011-12-26
        • 2011-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多