除了CRUD操作之外,我不太熟悉数据库和它们提供的功能.

我的研究结果让我得了triggers分.基本上,触发器提供了这类功能:

(从Wikipedia开始)

通常有三个触发事件会导致触发器"触发":

  • 插入事件(在数据库中插入新记录时).
  • 更新事件(因为记录正在更改).
  • 删除事件(因为正在删除记录).

我的问题是:当使用某种触发器语义更新/删除/插入记录时,数据库是否可以以某种方式用Java通知我(最好包括已更改的数据)?

这个问题可能有什么替代解决方案?如何侦听数据库事件?

The main reason I want to do this is a scenario like this:

我有5个客户端应用程序,它们都在不同的进程中/跨不同的PC存在.它们都共享一个公共数据库(在本例中为Postgres).

假设一个客户端更改了数据库中所有5个客户端都"感兴趣"的记录.我正在努力想办法让客户端得到更改的"通知"(最好是附加受影响的数据),而不是让他们每隔一段时间查询数据.

推荐答案

使用Oracle,您可以在表上设置触发器,然后让触发器发送JMS消息.Oracle有两种不同的JMS实现.然后,您可以使用JDBC驱动程序来"监听"消息.我使用这种方法将更改推送到我的应用程序,而不是轮询.

Database相关问答推荐

如何替换对象数组内的数组元素

在Prisma中建立关系

无法向 SiriDB 添加新副本

术语 SSTable 和 LSM Tree 有什么区别

安装 SQL Server Management Studio Express后提示:Cannot open user default database. Login failed.

什么是非规范化 mysql 数据库的好方法?

MS Access:如何在 VBA 中压缩当前数据库

Postgresql 从多个表中删除多行

PHP - 数据库抽象层使用静态类与单例对象?

将实体框架中的字符串列映射到枚举

如何从 MySQL 行中修剪前导和尾随引号?

是否有任何数据库支持自动索引创建?

表别名如何影响性能?

如何用 SQL 思考?

MySQL 数据库中列名中的连字符

存储并仍然索引加密客户数据的最佳方式是什么?

为 PHPMyadmin DB 自动生成数据库图?

如何使用 JPA 注释创建连接表?

C# IEnumerator/yield struct 可能不好?

如何安装/更新到 Postgres 9.4?