我有一张桌子Table1。我手动输入了2行,然后看到第二行的记录为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之间不匹配?
答案 0 :(得分:5)
当AOS将记录插入表中时,首先它会从SYSTEMSEQUENCES表中保留(256个?我不记得了)RecId值的块。当AOS使用了所有保留和缓存的RecId时(即表中已插入许多记录),它将保留RecId的下一个块,因此NEXTVAL将相应增加,而不是增加1,而是增加保留的RecId。
在您的情况下,它保留了如此大的RecId块(超过749个),这有点令人惊讶。可能您有1个以上的AOS,并且每个AOS都保留了自己的RecId块用于插入?
无论如何,不用担心,“不匹配”是按照设计进行的,因此对于每个AX表中的每个插入,AX都不会使SYSTEMSEQUENCES表中的NETVAL递增。缓存规则。