На мгновение ударив головой об этом. Я создаю базу данных на 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.camera_dp без предоставления product_id будет первым вставить запись в dd1.dp_registry, а затем использовать этот инкрементируется product_id в качестве ключевого поля для DD1. camera_dp.
Оператор insert работает при запуске с жестко запрограммированным значением для: new.product_id и ID_SEQ.NEXTVAL также работает правильно. У меня такое чувство, что я пропустил что-то очевидное.
Спасибо!
Какая ошибка компиляции, которую вы видите? –
Я не получаю никаких ошибок компиляции, только триггер ORA-04098 недействителен и не удалось выполнить повторную проверку при попытке вставить. – Dave
, когда я выбираю user_errors, он говорит мне, что таблица или представление не существует .... но если я скопирую инструкцию insert из моего кода и запустим этот sql (со значением, замененным для: new.product_id), я получаю Нет ошибки. – Dave