使用 If 循环触发显示编译错误

Trigger with If loop shows compilation error

我创建了一个触发器,它将数据插入不同数据库中的 table。如果工资高于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;
/

显示创建的Trigger编译错误

如果是Oracle 11g,请去掉花括号再编译。

此外,在插入记录时在目标 table 中提供列名是一种很好的做法。如果将新列添加到相同的 table.

,盲插入会导致问题
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;