代码之家  ›  专栏  ›  技术社区  ›  Mohammad Yusuf

表中的RecId小于系统序列中的NextVal

  •  1
  • Mohammad Yusuf  · 技术社区  · 7 年前

    我有一张桌子。我手动输入了两行,我看到第二行的recid为5637144577。

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

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

    下一个号码是5637145326

    为什么recid之间不匹配?

    1 回复  |  直到 7 年前
        1
  •  5
  •   10p    7 年前

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

    在您的情况下,它保留了这么大的RecId块(超过749个),这有点令人惊讶。可能您有超过1个ao,每个ao都保留了自己的RecId块以供插入?

    不管怎样,不用担心,“不匹配”是按设计的,这样AX就不会为每个AX表中的每个insert在SYSTEMSEQUENCES表中增加NETVAL。缓存规则。