如果每次回答问题都要这样做,很累的
SQL> desc test1;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
A NUMBER
SQL> alter table test1 add( b varchar2(20));
表已更改。
已用时间: 00: 00: 00.02
SQL> desc test;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
A NUMBER
B NUMBER
C NUMBER
SQL> truncate table test1;
表已截掉。
已用时间: 00: 00: 00.01
SQL> alter table test add(d varchar2(20));
表已更改。
已用时间: 00: 00: 00.00
SQL> create or replace trigger mytrigger
2 after insert on test
3 for each row
4 declare
5 sqlstr varchar2(1000);
6 begin
7 sqlstr := 'insert into test1 values(' ||:new.a||','|| :new.d ||')';
8 execute immediate sqlstr;
9 end mytrigger;
10 /
触发器已创建
已用时间: 00: 00: 00.00
SQL> insert into test values(1,1,1,'2');
已创建 1 行。
已用时间: 00: 00: 00.00
SQL> commit;
提交完成。
已用时间: 00: 00: 00.00
SQL> select * from test1;
A B
---------- --------------------
1 2
已用时间: 00: 00: 00.00
SQL> insert into test values(2,2,2,'www');
insert into test values(2,2,2,'www')
*
ERROR 位于第 1 行:
ORA-00984: 列在此处不允许
ORA-06512: 在"RAINY.MYTRIGGER", line 5
ORA-04088: 触发器 'RAINY.MYTRIGGER' 执行过程中出错
已用时间: 00: 00: 00.01
SQL> create or replace trigger mytrigger
2 after insert on test
3 for each row
4 declare
5 sqlstr varchar2(1000);
6 begin
7 sqlstr := 'insert into test1 values(' ||:new.a||','''|| :new.d ||''')';
8 execute immediate sqlstr;
9 end mytrigger;
10 /
触发器已创建
已用时间: 00: 00: 00.00
SQL> insert into test values(2,2,2,'www');
已创建 1 行。
已用时间: 00: 00: 00.00
SQL> commit;
提交完成。
已用时间: 00: 00: 00.00
SQL> select * from test1;
A B
---------- --------------------
1 2
2 www
已用时间: 00: 00: 00.00
SQL>