在两个依赖表中插入值Oracle Apex

时间:2019-07-16 23:01:39

标签: sql oracle oracle-apex

我已经从3个相关表中创建了一个查询:

  1. 汽车零件(id,名称,值);

  2. car_model(id,name,price);

  3. part_and_model(car_model_id,car_part_id)

我从值列表中获得汽车模型,对于car_id,我使用序列进行递增。

我有查询中所有需要的字段,但是现在我想同时将数据插入car_parts和part_and_model中。我在提交时创建了两个插入流程(第一个用于car_parts(fk),第二个用于part_and_model)。运行此命令时,出现此错误,并且没有数据插入表中:

ORA-02291:违反完整性约束(PRACTICE.FK_CAR_PART_car_part)-未找到父键

当我删除第二个进程时,数据已正确插入到car_parts表中。为什么会这样呢?第二个流程是否在第一个流程之前执行?我还想念什么?

项目P8_CAR_MODEL = LOV; 项目P8_ID =>序列:从双重选择SELECT CP_SEK.NEXTVAL;

process1:插入CAR_PARTS(CP_ID,CP_NAME,CP_PRICE)值(:P8_ID,:P8_NAME,:P8_PRICE);

process2:将值(:P8_ID,:P8_CAR_MODEL)插入part_and_model(PART_ID,MODEL_ID);

编辑:

我设法插入到car_parts表中,但错误仍然表明,即使在表中也找不到父对象,所以它必须是序列... 这是我的代码: 流程1: 开始 从双中选择PART_SEK.NEXTVAL INTO:P8_ID;

插入car_parts(id,name,value)VALUES(:P8_ID,:P8_NAME,:P8_PRICE); 结束;

process2:

插入part_and_model(car_model_id,car_part_id)值(:P8_MODEL,:P8_ID);

EDIT2: 当我在第二个过程中使用PART_SEK.currval而不是p8_id时,它可以工作 再次感谢您的时间。

3 个答案:

答案 0 :(得分:1)

在同一过程中将行插入两个表中;首先是主表,然后是详细信息。

答案 1 :(得分:0)

查看处理顺序。第一个过程必须具有较低的顺序,例如10,第二个过程必须具有较大的顺序。 确保在第一步中必须将其插入主表中。 将流程执行点更改为处理。

答案 2 :(得分:0)

{{1}}

按所有权利,这应该起作用。我确实相信您的问题确实出在顺序上,我认为这不会导致您的错误。所以请尝试这个,让我们知道。