Создание INSERT TRIGGER в другой таблице - PullRequest
0 голосов
/ 29 марта 2012

Мне нужна помощь по созданию триггера на моей таблице1 это вставит определенные столбцы в table2 из table1. Как я могу это сделать? Я использую Oracle 11G XE.

Вот мой код:

create trigger AllowanceTrigger
on ex_bulacan
after insert
as
insert into allowance VALUES (PLANT_ORIGIN,SO_NO, SO_STATUS,SO_REMARKS,DRIVER_NAME)
    select plant_origin, sales_order_no, status,remarks, driver_name
    from ex_bulacan;
go ; 

Когда я запускаю эту команду, я получаю эту ошибку

ORA-04071: missing BEFORE, AFTER or INSTEAD OF keyword

Объяснение:

ORA-04071. 00000 - «отсутствует ПЕРЕД, ПОСЛЕ или ВМЕСТО ключевого слова»
* Причина: В операторе триггера отсутствует предложение BEFORE / AFTER / INSTEAD OF.
* Действие: Укажите ДО, ПОСЛЕ или ВМЕСТО.

Ответы [ 2 ]

1 голос
/ 29 марта 2012

В PL / SQL нет оператора go, и вы не выполнили правильный синтаксис для определения триггера (это хорошо документировано )

Попробуйте это:

create trigger AllowanceTrigger
after insert on ex_bulacan
begin
    insert into allowance (PLANT_ORIGIN,SO_NO, SO_STATUS,SO_REMARKS,DRIVER_NAME)
        select plant_origin, sales_order_no, status,remarks, driver_name
        from ex_bulacan;
end; 

Я не уверен, что он делает то, что вы хотели. Он запускается один раз за оператор вставки , не для каждой строки, и вставляет все строки из ex_bulacan в допуск, а не только те, которые вы только что вставили. Может быть, вы на самом деле хотите:

create trigger AllowanceTrigger
after insert on ex_bulacan
for each row
begin
    insert into allowance (PLANT_ORIGIN,SO_NO, SO_STATUS,SO_REMARKS,DRIVER_NAME)
        values (:new.plant_origin, :new.sales_order_no, :new.status, :new.remarks, 
                :new.driver_name);
end; 
0 голосов
/ 29 марта 2012

В вашем коде есть синтаксическая ошибка. Вы должны указать триггер в следующем порядке:

CREATE TRIGGER AllowanceTrigger
AFTER INSERT
ON ex_bulacan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...