有两张表,一张student表有列 classid,classname。另一张表为protect 有列protectid,protectname,classid,clicknum。
现在想创建一个触发器,删除表protect的中的记录也删除student中的记录。怎么创建。
插入主表student中的数据,对应的从表protect的classid列也插入数据,这个触发器又怎么建。

解决方案 »

  1.   


    create or replace trigger delete_tri
    on protect after delete
    for each row
    begin
    delete student where classid=:old.classid;
    end;--还有一个自己写吧,都是挺简单的
      

  2.   

    delete from student where classid=:old.classid;
      

  3.   

    用before触发器或者after触发器都行
    假如表有字段id
    记住   在insert 的时候   :new.id 表示插入的id, 无:old.id
    在update 的时候 :new.id表示修改过后id号,:old.id表示修改前的id
    delete 的时候,:old.id 表示删除的id号。 无:new.id
      

  4.   

    create or replace trigger trg_student
         on protect after delete
    for each rowbegin
     delete student where classid = :old.classid;
    end;create or replace trigger trg_protect
         on student after insert
    for each rowbegin
     insert into protect values(:new.classid,:new.xxx);--你想要插入的字段
    end;
      

  5.   


    --修改下:
    create or replace trigger trg_student
         on protect after delete
    for each rowbegin
     delete * from student where classid = :old.classid;
    end;create or replace trigger trg_protect
         on student after insert
    for each rowbegin
     insert into protect(protectid,protectname,classid,clicknum) values('xxx','xxx',:new.classid,'xxx');--xxx是其他的字段,我不知道你想要从哪里去取
    end;
      

  6.   

    create or replace trigger trg_student
         on protect after delete
    for each rowbegin
     delete student where classid = :old.classid;
    end;create or replace trigger trg_protect
         on student after insert
    for each rowbegin
     insert into protect values(:new.classid,:new.xxx);
    end;
      

  7.   

     on protect after delete
    after delete on protect
      

  8.   

    不建议在TRIGGER中删除数据,特别是这种操作如果和业务相关。逻辑一致性最好由业务程序完成,要不然查问题的时候很难定位。