这是一个特定的场景。我需要实现的是:
- 如果有人在我的应用程序 UI 之外的指定表中插入或删除一行或多行,那么它应该检测到该表已被修改。
- 它不应该使用触发器。
这是它不需要做的:
- 区分是删除还是插入。
- 检测谁进行了更改或更改了位置。
- 如果用户同时执行相同数量的插入和删除。从技术上讲,这可以算作更改,因此不需要将其检测为插入和删除。
这就是我们认为可以完成这项工作的方法:创建一个存储被监视的表名、行数和验证键的表,让我们调用integrity_tbl
. 插入或删除后,更新行数和验证键。仅当验证键有效时才更新行数。每次比较失败时使验证密钥无效。当需要数据完整性验证时,计算表中的行数并与integrity_tbl
.
您认为这是一个好方法还是我们应该尝试其他方法?
为此,我们使用 Delphi 和 Firebird。如前所述,我们正在使用 IBX 连接到数据库。但逻辑是问题而不是访问数据库的方式。