给定一个包含多个表的数据库。我想要一种机制,当给定查询的结果发生变化时通知我。
例如我有以下两张表
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
执行插入/更新/删除命令时,我希望收到通知,但前提是命令执行更改了结果询问。不改变查询结果的操作,例如lastname
列的更新不应导致通知。
我想要一个独立于 DBMS 的解决方案,但如果您知道特定 DBMS 的解决方案,请毫不犹豫地分享它:-) 特别是,我对 postgresql、mysql 和 sqlite 感兴趣。
如果该解决方案也适用于更复杂的查询,例如带有子查询和/或聚合函数的查询。
另一个很棒的功能是准备好的语句。例如,当我通过将 "financial"
替换为 :department_name
来更改给定查询时,我将收到一条以部门名称作为参数的参数化通知。
我知道触发机制,但似乎并不能解决问题。
最佳答案
您找不到独立于 DBMS 的解决方案。
SQL Server 具有 Service Broker,它提供了您正在寻找的功能 - 您可以根据特定查询订阅通知,并且当查询结果发生任何更改时,您的代码将收到一个事件。
您可以在 MSDN 上找到更多详细信息.
关于mysql - SQL查询结果更改的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289797/