【发布时间】:2026-01-26 05:45:01
【问题描述】:
好的。我的情况是,我有两家公司 COMPANY1 和 COMPANY2,它们协同工作以创建 PART。由于他们一起工作,他们都拥有所有权,因此都希望将 PART_NUMBER 分配给同一部分。 COMPANY1 为 COMPANY2 提供了一个 PART_NUMBERS 块,以分配给他们创建的部件。
我有一个包含主键 (COMPANY1_PART_NUMBER) 的表 (TABLE_PARTS)。由于 COMPANY1 向 COMPANY2 提供了一组数字,因此表格中只填充了这些数字并等待分配给实际零件。
我有一个 COMPANY2 将使用的输入表单来插入零件信息,包括 COMPANY2_PART_NUMBER。我需要更新 TABLE_PARTS 中的行以填写 pk COMPANY1_PART_NUMBER 周围的其余列,从而将该编号分配给零件。
我已确定我需要选择 MIN(COMPANY1_PART_NUMBER),其中 COMPANY2_PART_NUMBER 为空,并使用零件信息更新该行。
我需要确定表单提交后将使用进程更新哪一行,因为表单会有并发用户,并且在页面加载时选择一行肯定会导致人们不小心尝试插入相同的 COMPANY1_PART_NUMBER 行。
有什么想法吗?我相信这并不难,但我遇到了问题,哈哈。谢谢!
【问题讨论】:
-
Pfew,我试图理解 :) 我需要澄清一下:公司 1 是否制造零件?创建的零件最终会出现在公司 1 的特定表中,还是像 TABLE_PARTS 这样的“共享”表?当您说公司 1 向公司 2 发送一组数字时,这是什么意思:公司 1 和 2 是否在不同的数据库/模式/...上运行,公司 2 是否知道这些数字是什么,或者是数字只是公司 2 可以为其分配“本地”零件的范围吗?看看这张图片imgur.com/bedo4,这有什么像吗?
-
这是一个像你的例子一样在'OR'之后的联合表。零件由 COMPANY2 创建和制造。 COMPANY1 帮助设计并拥有 COMPANY2 的部分所有权,因此他们将自己的零件编号应用于 COMPANY2 的零件。因此,TABLE_PARTS 中有一个零件具有来自 COMPANY1 和 COMPANY2 的唯一零件编号。 COMPANY1 为 COMPANY2 提供某个范围的数字块,该范围可能是简单的增量范围,也可能不是。因此,我不能使用序列来增加数字。
-
COMPANY1_PART_NUMBER 必须在此表或其他表中,并在提交时分配给零件。 COMPANY1_PART_NUMBER 可以分配给任何 COMPANY2_PART_NUMBER,因为 COMPANY1_PART_NUMBER 除了 PN 之外没有任何属性。所以 COMPANY1_PART_NUMBER 需要存储在某个地方,无论是在 TABLE_PARTS 还是其他表中,然后在 COMPANY2 提交零件时需要将它们分配给一行。有意义吗?
-
内置更新过程要求 PK (COMPANY1_PART_NUMBER) 位于页面上的字段中,这意味着我必须在页面加载时将其分配,但如果有人在其他用户提交之前加载同一页面表单他们将调用相同的 COMPANY1_PART_NUMBER,然后覆盖前一个用户的行。然而,这最终起作用,最重要的是它可靠地为 COMPANY2 的用户提供了唯一的 COMPANY1_PART_NUMBER。当表中没有更多的 COMPANY1_PART_NUMBER 时,它应该返回错误。
-
好的,我认为现在更清楚了(我希望 x)):有一张桌子,里面只有零件,并且有一个 company2_part_number。公司 2 收到来自公司 1 的编号列表,并将这些编号分配给部件(它只是简单地从该列表中获取一个编号,没有指向特定部件或任何东西的链接,只是一个编号列表)。那么,您是否需要用户在进入表单时能够看到他们将分配的号码? (我认为他们在创建时不会在意,因为数字是“随机的”)我认为在分配后显示它是最重要的。
标签: sql oracle process oracle-apex