Caché/IRIS的特点是运行Global的修改,而这个修改和SQL是无关的,因此非常容易出现数据库表数据完整性的问题,也就是表中的数据是不是符合定义的表约束。
这样的情况非常常见。有些是人为的对Global的错误修改, 有些是应用系统的事务性管理写的不对,造成事务回滚的时候破坏了索引的完整性。无论什么原因,只要使用Global操作,破坏SQL的完整性非常难以避免。结果就是SQL查询给出错误结果。
最简单的解决方法就是执行“索引检查(Validate Indices)"
我们来做个实验
- 先修改一个global: 如下图, 将Patient表的一个记录的SEX字段,从'M'改到‘F'.
运行索引检查, 结果会提示您问题在什么地方。