--主表
Create Table Tab_1
(
Col_key varchar(12),
Col_Link Varchar(12),
Col_1 Varchar(100),
Col_9 Varchar(100)
);--细表(通过Col_Link)
Create Table Tab_2
(
Col_key varchar(12),
Col_Link Varchar(12),
Col_p Varchar(100)
);--主触发器
Create Or Replace Trigger tr_1
after insert or update of col_1 on tab_1 for each row
Declare
ll_Count Number;
Begin
Select Count(*) into ll_count From tab_2; --此句引起的问题
If ll_Count > 0 Then
Update tab_1 Set Col_9 = to_char(sysdate,'MI:SS');
End if;
End;
/--级联触发器
Create Or Replace Trigger tr_2
after insert or update of col_p on tab_2 for each row
Begin
Update Tab_1 Set Col_1=Col_1 Where Col_Link = :Old.Col_Link;
End;
/delete from tab_1;
insert into tab_1(col_key,col_link) values( '123456','9988');
commit;
insert into tab_2(col_key,col_link,col_p) values( '123456','9988','8');
commit;
update tab_2 set col_p='p';
--出错
执行以上步骤将出现错误,错误是由于主触发器调用到细表所致,请问有没有解决办法?
Create Table Tab_1
(
Col_key varchar(12),
Col_Link Varchar(12),
Col_1 Varchar(100),
Col_9 Varchar(100)
);--细表(通过Col_Link)
Create Table Tab_2
(
Col_key varchar(12),
Col_Link Varchar(12),
Col_p Varchar(100)
);--主触发器
Create Or Replace Trigger tr_1
after insert or update of col_1 on tab_1 for each row
Declare
ll_Count Number;
Begin
Select Count(*) into ll_count From tab_2; --此句引起的问题
If ll_Count > 0 Then
Update tab_1 Set Col_9 = to_char(sysdate,'MI:SS');
End if;
End;
/--级联触发器
Create Or Replace Trigger tr_2
after insert or update of col_p on tab_2 for each row
Begin
Update Tab_1 Set Col_1=Col_1 Where Col_Link = :Old.Col_Link;
End;
/delete from tab_1;
insert into tab_1(col_key,col_link) values( '123456','9988');
commit;
insert into tab_2(col_key,col_link,col_p) values( '123456','9988','8');
commit;
update tab_2 set col_p='p';
--出错
执行以上步骤将出现错误,错误是由于主触发器调用到细表所致,请问有没有解决办法?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货