create or replace trigger tri_delete_input_database
before insert or delete on Terminal_Output_Database
for each row
begindelete from terminal_input_output where Terminal_Machine_Sign=:old.Terminal_Machine_Sign;end;

解决方案 »

  1.   

    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;
    /
      

  2.   

    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;