table 中的 RecId 小于 SystemSequences 中的 NextVal

RecId in table less than NextVal in SystemSequences

我有一个 table 表 1。我手动输入了 2 行,我看到第二行的 recid 为 5637144577。

但是当我 运行 这个查询时:

select NEXTVAL FROM SYSTEMSEQUENCES WHERE DATAAREAID = 'DAT' AND NAME = 'SEQNO' 
AND TABID = (SELECT TABLEID FROM SQLDICTIONARY WHERE NAME='Table1' AND FIELDID=0)

我得到 NextVal = 5637145326

为什么 RecId 不匹配?

当 AOS 将记录插入 table 时,首先它会保留来自 SYSTEMSEQUENCES table 的一块(256?我不记得了)RecId 值。当所有保留和缓存的 RecId 都被 AOS 使用后(即在 table 中插入了那么多记录),它会保留下一个 RecId 块,因此 NEXTVAL 将相应增加,不是增加 1,而是按保留的 RecId 的数量。

令人惊讶的是,在您的情况下,它保留了如此大的 RecId 块(超过 749 个)。可能您有超过 1 个 AOS,并且每个 AOS 都保留了自己的 RecId 块用于插入?

无论如何,不​​用担心,'mismatch' 是按设计设计的,因此对于每个 AX table 中的每个插入,AX 不会在 SYSTEMSEQUENCES table 中递增 NETVAL .缓存规则。