oracle 最简单的触发器,如果一个表插入数据,就往另一个表插入,为什么报错?

求解
2025-03-23 21:41:36
推荐回答(2个)
回答1:

SQL> create table tba(id number);

表已创建。

SQL> create table tbc(id number);

表已创建。

SQL> create or replace trigger test_trg
2 after insert on tba for each row
3 begin
4 insert into tbc values(:new.id);
5 end;
6 /

触发器已创建

SQL> select * from tba;

未选定行

SQL> select * from tbc;

未选定行

SQL> insert into tba values(100);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from tba;

ID
----------
100

SQL> select * from tbc;

ID
----------
100
你说的是一个表插入数据 同时插入到另一个表,没搞懂为什么用 dbms_output.put_line

回答2:

创建触发器的语句应该用"运行脚本"的方法来执行,不要用“运行语句”的方式来执行。
如果用“运行语句”的方式来执行的话,它会将:NEW作为绑定变量看待,但是:NEW又没有绑定值,故出错。在Toad上来说,应该是用"Execute as script"那个按钮来执行,而不是平常用的"Execute as statement"那个按钮。