我有一张桌子Table1.我手动输入了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)
Run Code Online (Sandbox Code Playgroud)
我得到了NextVal = 5637145326
为什么RecIds之间存在不匹配?
当AOS将记录插入表中时,首先它会从SYSTEMSEQUENCES表中保留一块(256?我不记得)RecId值.当AOS使用了所有保留和缓存的RecId时(即表中已插入了许多记录),它将保留下一个RecId块,因此NEXTVAL将相应增加,而不是增加1,而是增加数量.保留的RecId.
有点令人惊讶的是,在你的情况下,它保留了如此大的块(超过749)的RecId.可能你有超过1个AOS,每个AOS保留了自己的RecId块用于插入?
无论如何,没有什么可担心的,'不匹配'是按照设计的,因此AX不会在SYSTEMSEQUENCES表中为每个AX表中的每个插入增加NETVAL.缓存规则.