使用 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;
我创建了一个触发器,它将数据插入不同数据库中的 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;