しばらくこれに頭をぶつけます。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 も適切に機能します。明らかな何かが欠けているような気がします。
ありがとう!