更改SQL查询结果的通知

时间:2015-03-26 22:07:54

标签: mysql sql database sqlite postgresql

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

例如,我有以下两个表

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上执行insert / update / delete命令时,我希望收到通知,但仅当命令执行更改查询结果时才会收到通知。不改变查询结果的操作,例如,列lastname的更新不应导致通知。

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

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

另一个很棒的功能是准备好的陈述。例如,当我通过"financial"替换:department_name来更改给定查询时,我会获得一个参数化通知,其中部门名称作为参数。

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

1 个答案:

答案 0 :(得分:1)

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

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

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