create or replace trigger tri_delete_input_database
before insert or delete on Terminal_Output_Database
for each row
begin
delete from terminal_input_output where Terminal_Machine_Sign=:old.Terminal_Machine_Sign;
end;
...全文
624打赏收藏
触发器的问题不知道那里 出错
create or replace trigger tri_delete_input_database before insert or delete on Terminal_Output_Database for each row begin delete from terminal_input_output where Terminal_Machine_Sign=:old.Terminal_Machine_Sign; end;
ORACLE的行级触发器是不能对本表进行操作的,只有语句级的可以。
所以你这样些的触发器是怎么也不会起任何作用的。需要语句级触发器和行级触发起配合使用,例子:
create or replace package pk_Terminal is
pk_Terminal_Machine_Sign varchar2(40);
end PKGYYS;
create or replace trigger Rtri_delete_input_database
before insert or delete on Terminal_Output_Database
for each row
begin
pk_Terminal.pk_Terminal_Machine_Sign:=old.Terminal_Machine_Sign;
end;
create or replace trigger Ltri_delete_input_database
before insert or delete on Terminal_Output_Database
begin
if pk_Terminal.pk_Terminal_Machine_Sign is not null then
delete from terminal_input_output where Terminal_Machine_Sign=pk_Terminal_Machine_Sign;
pk_Terminal.pk_Terminal_Machine_Sign:=null;
end if;
end;
create or replace trigger tri_delete_input_database
before insert or delete on Terminal_Output_Database
for each row
begin
if inserting then
null;
else
delete from terminal_input_output where Terminal_Machine_Sign=:old.Terminal_Machine_Sign;
end if;
end;
/