0

我正在从我的 APEX 应用程序中填充 3 个表:

Customer
Order
CustomerOrder

第一条记录插入到客户表中,然后是订单表,然后在 CustomerOrder 中创建一条记录,将前两个表链接在一起。

是否有3个插入,一个接一个

Insert into Customer …
If cust_id is not null then
    Insert into Order..
    If order_id is not null then
        Insert into CustomerOrder
    End If
End If

但是,如果在将记录插入到 CustomerOrder 时出现问题怎么办?Order 表中的记录将不会链接到任何客户,是孤立的。

这可以防止吗?这意味着如果代码中的任何地方发生错误,整个事情可以像 SQL 中的事务一样回滚吗?

4

1 回答 1

0

我想知道为什么你有CustomerOrder。一个可以Order属于多个Customer吗?如果没有,您似乎可以简单地在Order.

除此之外,您的问题的答案取决于您如何布置应用程序。如果您有一个用户输入所有订单信息的页面,包括该订单属于哪个客户;并且该页面调用执行多个 INSERT 的 PL/SQL 块;并且您没有在该 PL/SQL 块中显式提交;然后所有这些都发生在一个事务中。如果该事务完成且没有错误,Apex 将提交该事务,否则将其回滚。

如果您将数据条目拆分到多个页面,那么每个页面提交都将是一个单独提交的事务。

对我来说,您将有一个单独的页面用于输入客户信息。Customer但我认为在输入订单信息之前提交记录没有问题。

让一个页面输入订单,然后用另一个页面将订单映射到客户对我来说是没有意义的。如果您在订单输入页面上选择客户,并将其插入到Order一个CustomerOrderPL/SQL 块中,那么您不应该有任何孤立订单。

于 2022-01-24T14:30:17.667 回答