【问题标题】:Notification for changed SQL query result更改 SQL 查询结果的通知
【发布时间】:2015-03-26 22:07:53
【问题描述】:

给定一个包含多个表的数据库。我希望有一种机制在给定查询的结果发生变化时通知我。

比如我有下面两张表

CREATE TABLE employee (
    e_id int,
    firstname varchar(255),
    lastname varchar(255),
    d_id int
);

CREATE TABLE department (
    d_id int,
    name varchar(255)
);

和查询

SELECT firstname
FROM employee
JOIN department
ON employee.d_id = department.d_id
WHERE department.name = "financial";

当我对employeedepartment 执行插入/更新/删除命令时,我希望收到通知,但前提是命令执行更改了查询结果。不改变查询结果的操作,例如lastname 列的更新不应导致通知。

我想要一个独立于 DBMS 的解决方案,但如果您知道特定 DBMS 的解决方案,请不要犹豫,分享它:-) 特别是,我对 postgresql、mysql 和 sqlite 感兴趣。

如果该解决方案也适用于更复杂的查询,那就太好了,例如带有子查询和/或聚合函数的查询。

另一个很棒的功能是准备好的语句。例如,当我通过将"financial" 替换为:department_name 来更改给定查询时,我会收到一个以部门名称作为参数的参数化通知。

我知道触发机制,但它似乎无法解决问题。

【问题讨论】:

    标签: mysql sql database sqlite postgresql


    【解决方案1】:

    您不会找到独立于 DBMS 的解决方案。

    SQL Server 具有 Service Broker,它提供了您正在寻找的功能 - 您可以订阅基于特定查询的通知,并且当查询结果发生任何更改时,您的代码将收到一个事件。

    您可以在MSDN找到更多详细信息。

    【讨论】:

    • 感谢您的回答。这似乎正是我想要的。不知道其他DBMS是否有类似的机制?
    • 您最好说明您对哪个 DBMS 感兴趣并标记问题 - 这样您就可以接触到知道的人!
    猜你喜欢
    • 2016-03-21
    • 2015-09-04
    • 2013-04-24
    • 1970-01-01
    • 2014-07-04
    • 2021-11-12
    • 1970-01-01
    • 2017-04-29
    • 2014-12-26
    相关资源
    最近更新 更多