例如:表A有性别字段,怎么在A中DELETE触发器中完成删除一条记录就把剩下所有记录的性别改成'男'???大虾们,来点代码。

解决方案 »

  1.   


    create table a(
    id int,
    col varchar2(3)
    );
    insert into a values(1,'');
    insert into a values(2,'');create or replace trigger a_del
    after delete on a
    begin
    update a set col='男';
    end;
    /delete a where id=1;
    select * from a;
      

  2.   

    自治事务。
    pragma autonomous_transaction
      

  3.   

    哎,这么奇怪的需求啊,
    只好用自治事务,不过不是万不得已,不要这么做。create or replace trigger a_trigger
    after delete on a
    for each row
    declare
      pragma autonomous_transaction;
    begin
      update a set sex='男' where rowid != :new.rowid;
      commit;
    end;
      

  4.   

    update a set sex='男' where rowid != :old.rowid;
    --或者
    update a set sex='男';
      

  5.   

    create or replace trigger a_trigger
    after delete on a
    for each row
    declare
      pragma autonomous_transaction;
    begin
      update a set sex='男' where rowid != :new.rowid;
      commit;
    end;
      

  6.   

    create or replace trigger a_trigger
    after delete on a
    for each row
    declare
      pragma autonomous_transaction;
    begin
      update a set sex='男' where rowid != :new.rowid;
      commit;
    end;