在SAP B1中如何生成唯一ID /序列号?

问题描述

| 我想知道是否有人知道SAP B1(SAP Business One)如何生成它在各种表中使用的唯一主键。我正在谈论的示例包括OCRD.DocEntry和OCPR.CntctCode。这些是整数列,它们会自动“递增”。 执行此操作的典型方法包括标识列(例如SQL Server),序列(例如Oracle)或持有以编程方式递增的Nextval的手动序列表。尽我所知,B1不在这些列中使用任何这些技术。那么如何处理它们呢? 我正在查看的特定实例正在使用SQL Server数据库。 是的,我很清楚这样一个事实,我不需要了解内部工作情况,也不必在数据库中随意摆弄,等等。这只是困扰我我不知道他们是怎么做的!如果有人能解释,我将不胜感激。     

解决方法

SAPB1使用ONNM表生成新的唯一编号。添加文档后,将发生以下情况。 SQL事务开始 使用更新锁从ONNM表中查询下一个号码 用新的数字(+1)更新ONNM表。 该文档已添加 SQL事务已提交。 运行带有更新锁的SQL SELECT语句将返回当前行,同时锁定该行直到事务结束。您可以确保在选择行和事务结束之间没有其他用户可以更改该行。 您可以使用SQL事件探查器监视在SAP B1中执行操作时执行的语句。这是获取下一个要在报价中使用的数字的行。报价为ObjectType 23。 从[dbo]中选择T0。*。[ONNM]在T0中(带上锁)的T0。[ObjectCode] = \ '23 \'     ,SAP B1使用ONNM生成序列号。 它为其中注册的每个对象维护一个自动键。并根据自动键序列号生成。 对于每个添加事件,此自动键将增加+1     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...