怎么样使用语句触发器中,对应表的字段值。如:
create or replace trigger UPDATE_RENYUAN
  after insert or update on RENYUAN
begin
  select min(score) from RENYUAN where NAME =NAME;
...
在下面的PL/SQL中,怎样表这个触发器对应的表当前操作的这条记录的某个字段做为参数传进去呢。
该怎么写呢?

解决方案 »

  1.   

    触发器中不能传参数的
    可以用:old.column_name和:new.column_name来做
      

  2.   

    select min(score) from RENYUAN where NAME = :new.value;但是这个,因为是RENYUAN表触发器中,所以是不能再访问RENYUAN表的。这个地方也会报错。
      

  3.   

    1、可以使用:new.value和:old.value;
    2、如果必须要在触发器中引用建立触发器的表,必须使用自治事务
    否则在运行时会得到ORA-04091错误。
    可以修改如下:
    create or replace trigger UPDATE_RENYUAN
      after insert or update on RENYUAN
      for each row--要引用new和old值,必须使用行级触发器
    declare
      PRAGMA AUTONOMOUS_TRANSACTION;--声明自治事务
      v_score RENYUAN.score%type;
    begin
      select min(score) into v_score from RENYUAN where NAME =:new.NAME;
    ...
      

  4.   

    问一下,触发器可以UPDATE基表吗?
    如果能的话,怎样做呢?
      

  5.   

    这个问题是很容易产生死锁的,解决的办法是直接赋值了:new.XXX='XXX',
    能解决,tangren再发表一下意见。
    麻烦了。