当COBOL-DB2程序多次执行相同的查询时,会发生NON-REPEATABLE READ条件,但是每次查询的结果都不同。当两个COBOL-DB2程序访问DB2表的同一行时,通常会发生这种情况。
第一个程序读取该行,然后第二个程序读取同一行,对其进行更新并提交更改。第一个程序再次读取同一行,但现在数据与先前的提取不匹配。
当多次执行查询时,查询结果中的行数不匹配时,将发生PHANTOM条件。
例如,如果PROG A在某些WHERE条件下执行查询并在结果中获得3行。现在,PROG B在同一表中插入新行,并且该新行位于PROG A使用的查询谓词下。
最后,PROG A执行相同的查询,并得到总共4行的结果。多余的1行称为幻像。