잠시 동안이 문제에 대해 머리를 대고 있습니다. Oracle 11g에 데이터베이스를 구축하고 "데이터 제품"테이블에 레코드가 생성 될 때마다 "레지스트리"테이블에 레코드를 삽입하려고 시도하고 있습니다. 레지스트리 테이블은 product_id를 자동 증가시켜야하며, 그 product_id는 데이터 제품 테이블에서 외래 키로 사용됩니다. 여기 내 트리거 코드 :트리거 편집 오류, Oracle 11g
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;
따라서, 이상적으로, 첫째 dd1.dp_registry에 레코드를 삽입 한 다음 DD1의 키 필드로 그 증가 PRODUCT_ID를 사용하는 PRODUCT_ID를 제공하지 않고 dd1.camera_dp에 삽입. camera_dp.
new.product_id 및 ID_SEQ.NEXTVAL도 하드 코딩 된 값으로 실행하면 insert 문이 제대로 작동합니다. 나는 명백한 것이 빠져 있다는 느낌을 받는다.
감사합니다.
보고있는 컴파일 오류는 무엇입니까? –
컴파일 오류가 발생하지 않습니다. ORA-04098 트리거가 잘못되어 삽입을 시도 할 때 재확인하지 못했습니다. – Dave
user_errors에서 선택할 때 테이블 또는 뷰가 존재하지 않는다고 알려주지 만 코드 삽입 문을 복사하여 해당 값 (new.product_id 값을 바꾼 값)으로 실행하면 얻을 수 있습니다. 오류 없음. – Dave