mysql - SQL查询结果更改的通知

标签 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 执行插入/更新/删除命令时,我希望收到通知,但前提是命令执行更改了结果询问。不改变查询结果的操作,例如lastname 列的更新不应导致通知。

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

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

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

我知道触发机制,但似乎并不能解决问题。

最佳答案

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

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

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

关于mysql - SQL查询结果更改的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289797/

相关文章:

MySQL分组汇总

mysql - 未定义偏移

mysql - 如何组合这两个 MySQL 语句

sql - psql 从 table=# 更改为 table(#

mysql - 从最后一个 WHERE 条件获取结果

java - Hibernate 中的身份生成器是单例吗?

空对象引用上的 java.lang.String java.lang.Object.toString()'

mysql - 将 VARCHAR 转换为 DATETIME 时为 NULL

php - 如何从 codeigniter 调用两个或多个表并发送或加载以查看

java - 创建和使用数据库 : Android