我已经从3个相关表中创建了一个查询:
汽车零件(id,名称,值);
car_model(id,name,price);
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时,它可以工作 再次感谢您的时间。
答案 0 :(得分:1)
在同一过程中将行插入两个表中;首先是主表,然后是详细信息。
答案 1 :(得分:0)
查看处理顺序。第一个过程必须具有较低的顺序,例如10,第二个过程必须具有较大的顺序。 确保在第一步中必须将其插入主表中。 将流程执行点更改为处理。
答案 2 :(得分:0)
{{1}}
按所有权利,这应该起作用。我确实相信您的问题确实出在顺序上,我认为这不会导致您的错误。所以请尝试这个,让我们知道。