特别是for update of name;这也不象是个语句呀,

解决方案 »

  1.   

    还有一个问题,关于触发器的,在sqlserver中是insert,delete,update是没有前后之分的,我写了一个oracle中的触发器,是当删除A表中记录时,把这条记录插入到B表中,但我分别用了before delete, 和after delete并没有发现有什么区别,它们的区别之处在哪里,请指点
      

  2.   

    for update of name 
    是说该游标需要支持对Name进行更新。
      

  3.   

    name 是字段名。before是指在插入实际发生之前执行触发器。
    after是指在插入实际发生之后执行触发器。比如你要触发生成子表记录,需要用after。
    如果需要在插入前更新新增记录的值(比如ID号)可以用before。
      

  4.   

    也就是说只有当更新name字段时才会触发这个触发器,对么,别的字段更新不会触发这个触发器请确认,谢谢
      

  5.   

    也就是说只有当更新name字段时才会触发这个触发器,对么,别的字段更新不会触发这个触发器请确认,谢谢这据写错了,不好意思,当我没说
    for update of name这据话我还是不太懂,不写不行么
      

  6.   

    无论怎样,游标绝对不能更新,不然oracle是怎样控制游标查找.
    for update of name  --是可以对name时进行条件性锁,更新,删除当前记录
    例子:
    declare
    cursor t_sor is 
    select name from aa for update of id;
    begin
    for v_sor in t_sor loop
    update aa set sal=4 where current of id;
    end loop;
    end;
    /
    与下面效果相当:
    declare
    cursor t_sor is
    select id,name from aa;
    begin
    for v_sor in t_sor loop
    update aa set sal=4 where id=v_sor.id;
    end loop;
    end;
    /还有oracle与sql server触发器有区别
    sql server没有行级别之分,用deleting,updating,inserting来进行关联
    oracle 用 insert or update or delete on table for each row
    行级别触发器前可以:new进行更新
    行级别触发器后只能:old进行读取