我现在 有一个表A 有两个字段 aa char(5) 和 bb char(5);
另一个表B 两个字段 cc char(5) 和dd char(1);
创建一存储过程
create or replace trigger test after insert on A
for each row
declare
begin
insert into B(cc,dd)values(:new.aa,:new.bb);
commit;
end test; 往A表插入数据
这样做 肯定是错误的插不进去数据,但是 这样做不但B表插不进去数据连A表也插不进数据了
我想当b表发生问题的时候 不影响A表的数据插入
请问各位 高手 这个问题怎么解决啊
另一个表B 两个字段 cc char(5) 和dd char(1);
创建一存储过程
create or replace trigger test after insert on A
for each row
declare
begin
insert into B(cc,dd)values(:new.aa,:new.bb);
commit;
end test; 往A表插入数据
这样做 肯定是错误的插不进去数据,但是 这样做不但B表插不进去数据连A表也插不进数据了
我想当b表发生问题的时候 不影响A表的数据插入
请问各位 高手 这个问题怎么解决啊
Connected as dinyaSQL> --触发器中不允许使用commit, rollback等, 要使用的话,指定为自治事务.SQL> create table a (aa char(5),bb char(5));Table createdSQL> create table b (cc char(5),dd char(1));Table createdSQL> create or replace trigger a_to_b
2 after insert on a
3 for each row
4 begin
5 insert into b values(:new.aa,:new.bb);
6 end;
7 /Trigger createdSQL> insert into a values('2222','ssss');insert into a values('2222','ssss')ORA-12899: 列 "DINYA"."B"."DD" 的值太大 (实际值: 5, 最大值: 1)
ORA-06512: 在 "DINYA.A_TO_B", line 2
ORA-04088: 触发器 'DINYA.A_TO_B' 执行过程中出错SQL> drop trigger a_to_b;Trigger droppedSQL> create or replace trigger a_to_b
2 after insert on a
3 for each row
4 declare
5 pragma autonomous_transaction;
6 begin
7 insert into b values(:new.aa,:new.bb);
8 commit;
9 exception
10 when others then
11 rollback;
12 null;
13 end;
14 /Trigger createdSQL> insert into a values('1111','OKOK');1 row insertedSQL> commit;Commit completeSQL> select * From a;AA BB
----- -----
1111 OKOKSQL> select * from b;CC DD
----- --SQL>
SQL> --测试完毕.