表中的RecId小于SystemSequences中的NextVal

时间:2018-08-05 09:32:12

标签: axapta

我有一张桌子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之间不匹配?

1 个答案:

答案 0 :(得分:5)

当AOS将记录插入表中时,首先它会从SYSTEMSEQUENCES表中保留(256个?我不记得了)RecId值的块。当AOS使用了所有保留和缓存的RecId时(即表中已插入许多记录),它将保留RecId的下一个块,因此NEXTVAL将相应增加,而不是增加1,而是增加保留的RecId。

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

无论如何,不​​用担心,“不匹配”是按照设计进行的,因此对于每个AX表中的每个插入,AX都不会使SYSTEMSEQUENCES表中的NETVAL递增。缓存规则。