把我的头撞在这个上一会儿。我正在 oracle 11g 上构建一个数据库,并尝试在“数据产品”表上创建记录时将记录插入到“注册表”表中。注册表需要自增product_id,然后product_id作为数据产品表的外键。这是我的触发代码:
CREATE OR REPLACE TRIGGER "TR_CAMERA_DP_DPR_CREATE"
BEFORE INSERT ON "DD1"."CAMERA_DP"
FOR EACH ROW
BEGIN
:new.product_id := ID_SEQ.NEXTVAL;
insert into dd1.dp_registry
( product_id,
fs_location,
parent_group_id,
product_name,
shortdes,
createdate,
revision )
values
( :new.product_id,
'placeholder',
0,
'_image',
'description placeholder',
sysdate,
0
);
END;
因此,理想情况下,在不提供 product_id 的情况下插入 dd1.camera_dp 将首先将记录插入 dd1.dp_registry,然后使用递增的 product_id 作为 dd1.camera_dp 的键字段。
插入语句在使用 :new.product_id 的硬编码值运行时有效,并且 ID_SEQ.NEXTVAL 也正常工作。我觉得我错过了一些明显的东西。
谢谢!