gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:54:57 27 4
gpt4 key购买 nike

我想知道是否有人知道 SAP B1 (SAP Business One) 如何生成它在各种表中使用的唯一主键。我所说的示例包括 OCRD.DocEntryOCPR.CntctCode。这些“自动”递增的整数列。

执行此操作的典型方法包括标识列(例如 SQL Server)、序列(例如 Oracle)或包含以编程方式递增的 Nextval 的手动序列表。据我所知,B1 没有对这些列使用任何这些技术。那么它是如何处理它们的呢?

我正在查看的特定实例正在使用 SQL Server 数据库。

是的,我很清楚我没有“需要”了解内部工作原理,不应该在数据库中乱搞等等。这让我很困扰,我不知道不知道他们是怎么做到的!如果有人能解释一下,我将不胜感激。

最佳答案

SAPB1 使用 ONNM 表生成新的唯一编号。添加文档时,会发生以下情况。

  • SQL 事务开始
  • 使用更新锁从 ONNM 表中查询下一个数字
  • ONNM 表已更新为新编号 (+1)。
  • 文档已添加
  • SQL 事务已提交。

运行带有更新锁的 SQL SELECT 语句返回当前行,同时锁定该行直到事务结束。您可以保证在您选择它和交易结束之间没有其他用户可以更改该行。

您可以使用 SQL Profiler 来观察在 SAP B1 中执行操作时执行的语句。这是获取要在报价单中使用的下一个数字的行。引用是 ObjectType 23。

SELECT T0.* FROM [dbo].[ONNM] T0 WITH (UPDLOCK) WHERE T0.[ObjectCode] = '23'

关于sql - SAP B1 中如何生成唯一 ID/序列号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5652912/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com