【发布时间】:2012-03-14 15:09:31
【问题描述】:
我正在处理一个项目,我正在处理零件和订单。每个订单可能包含许多部分,并且每个部分在其生命周期中可能存在多个订单(尽管一次不超过一个活动订单)。我的表格目前如下:
PARTS_TABLE
PART_NUMBER varchar2(20)
ASSIGNED_ORDER_NUMBER number(5)
ASSIGNED_ORDER_STATUS varchar2(20)
ORDER_TABLE
ORDER_NUMBER number (5)
ORDER_STATUS varchar2(20)
ORDER_PARTS_LIST varchar2(4000) //Comma delimited list generated by shuttle item.
当前的设置对我们 atm 有效(借助上一个问题:Previous Question),但它需要在两个表中复制大量数据,并且它实际上不允许 PART 在多个 ORDERS 上它的生命历程。
我想做的是在这两个表之间创建一个交叉引用表:
ORDER_PARTS_TABLE
ORDER_NUMBER number(5) (pk1)
PART_NUMBER varchar2(20) (pk2)
ORDER_STATUS varchar2(20)
其中 PART_NUMBER 和 ORDER_NUMBER 创建一个联合主键。
我的主要问题是根据穿梭物品的值创建和编辑 ORDER_PARTS_TABLE 中的行。我能够使用我当前的设置有效地编辑/更新,但在我当前的设置中,我并没有尝试创建行,我只是引用 PARTS_TABLE 中的行。当一个人在 APEX 中使用表单上的穿梭项目将 PARTS 添加到 ORDER 中时,应在 ORDER_PARTS_TABLE 中创建新行,即:
ORDER_TABLE
ORDER_NUMBER ORDER_PARTS_LIST ORDER_STATUS
12345 675:342:871:902 ACTIVE
ORDER_PARTS_TABLE
ORDER_NUMBER PART_NUMBER ORDER_STATUS
12345 675 ACTIVE
12345 342 ACTIVE
12345 871 ACTIVE
12345 902 ACTIVE
如果稍后在删除部分的位置编辑该订单,则应从 ORDER_PARTS_TABLE 中删除与该关系相关的行或将其 ORDER_STATUS 设置为“已删除”
ORDER_TABLE
ORDER_NUMBER ORDER_PARTS_LIST ORDER_STATUS
12345 675:871:902 ACTIVE
either...
ORDER_PARTS_TABLE
ORDER_NUMBER PART_NUMBER ORDER_STATUS
12345 675 ACTIVE
12345 342 REMOVED
12345 871 ACTIVE
12345 902 ACTIVE
or...
ORDER_PARTS_TABLE
ORDER_NUMBER PART_NUMBER ORDER_STATUS
12345 675 ACTIVE
12345 871 ACTIVE
12345 902 ACTIVE
这些有意义吗?我目前的解决方案只是使用我非常满意的触发器,但让我知道解决这个新问题的最佳方法是什么。谢谢!
编辑:我一直在进行一些持续的挖掘,并发现了一些听起来很有希望的东西,如果它可以适应的话。这里有没有人有经验 REGEXP_SUBSTR? LINKLINK
【问题讨论】:
标签: sql oracle-apex