给定一个包含多个表的数据库。我希望有一种机制可以在给定查询的结果发生变化时通知我。
例如,我有以下两个表
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";
当我在employee
或department
上执行insert / update / delete命令时,我希望收到通知,但仅当命令执行更改查询结果时才会收到通知。不改变查询结果的操作,例如,列lastname
的更新不应导致通知。
我想要一个独立于DBMS的解决方案,但如果您知道某个特定DBMS的解决方案,请不要犹豫地分享它:-)特别是,我对postgresql,mysql和sqlite感兴趣。< / p>
如果解决方案也适用于更复杂的查询,例如,带有子查询和/或聚合函数的查询。
另一个很棒的功能是准备好的陈述。例如,当我通过"financial"
替换:department_name
来更改给定查询时,我会获得一个参数化通知,其中部门名称作为参数。
我知道触发机制,但它似乎无法解决问题。
答案 0 :(得分:1)
您将找不到独立于DBMS的解决方案。
SQL Server具有Service Broker,它提供您正在寻找的功能 - 您可以根据特定查询订阅通知,并且当任何更改查询结果时,您的代码将收到事件。
您可以在MSDN找到更多详细信息。