gpt4 book ai didi

delphi - 如何检测表是否在我的应用程序之外添加或删除了行?

转载 作者:行者123 更新时间:2023-12-03 15:58:30 25 4
gpt4 key购买 nike

这是一个特定的场景。我需要实现的是:

  1. 如果有人在指定表中插入或删除一行或多行在我的应用程序的 UI 之外,那么它应该检测到该表已修改。
  2. 它不应该使用触发器。

这是它不需要需要做的:

  1. 区分是删除还是插入。
  2. 检测进行了更改或在何处进行了更改。
  3. 如果用户同时执行相同数量的插入和删除。从技术上讲,这可以算作更改,因此不需要将其检测为插入和删除。

我们认为可以这样做: 创建一个表来存储监视的表名称、行数和验证键,我们调用 integrity_tbl。插入或删除后,更新行数和验证键。仅当验证 key 有效时才更新行数。每次比较失败时使验证 key 无效。当需要验证数据完整性时,计算表中的行数并与 integrity_tbl 进行比较。

您认为这是一个好方法还是我们应该尝试其他方法?

为此,我们使用 Delphi 和 Firebird。根据要求,我们正在使用 IBX 连接到数据库。但逻辑是问题而不是访问数据库的方式。

最佳答案

Firebird 有一个非常好的机制,可以在数据库中任何位置的特定内容发生更改时通知客户端。该机制称为Firebird Events 。阅读该文档以正确理解其功能。

一般来说,事件用在触发器或存储过程中。您使用关键字POST_EVENT <event_name>将特定事件发送到所有连接的客户端。 <event_name>可以是最多 127 个字符的任何字符串。然后,在 Delphi 中您需要使用名为 TIBEvents 的组件(或 TIBEventAlerter 在旧的 Delphi 版本中)。在那里,您使用 Events您指定一个或多个 <event_name>s 的属性您有兴趣接收。之后,您需要为 TIBEvents.OnEventAlert 编写代码您可以在其中每次触发所有注册事件时对其使用react。

关于delphi - 如何检测表是否在我的应用程序之外添加或删除了行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com