Триггер с циклом If показывает ошибку компиляции - PullRequest
0 голосов
/ 19 июня 2019

Я создал триггер, который будет вставлять данные в таблицу в другой базе данных.если оклад выше 10000. Но он показывает ошибку компиляции.

    create or replace Trigger insert_ti
after insert on emp1
for each row
begin
IF :new.salary = 10000 THEN
{
    insert into emp@db2todb1 
    values(:new.emp_id, :new.last_name, :new.first_name, :new.email, :new.hire_date, :new.salary, :new.manager_id);
}
END IF;
end;
/

Показывает триггер, созданный с ошибкой компиляции

1 Ответ

0 голосов
/ 19 июня 2019

Если это Oracle 11g, удалите фигурные скобки и скомпилируйте его.

Также рекомендуется указывать имена столбцов в целевой таблице при вставке записей.Слепая вставка вызовет проблемы, если новый столбец будет добавлен в ту же таблицу.

CREATE OR REPLACE TRIGGER insert_ti AFTER
    INSERT ON emp1
    FOR EACH ROW
BEGIN
    IF :new.salary > 10000 THEN
        INSERT INTO emp@db2todb1 VALUES (
            :new.emp_id
            , :new.last_name
            , :new.first_name
            , :new.email
            , :new.hire_date
            , :new.salary
            , :new.manager_id
        );
    END IF;
END;
...