请问如何在触发器when语句中加子查询
when ( new.sname  in ( select sname
                         from students ) and
         new.cname  in ( select cname
                         from courses ) )
oracle提示不允许子查询,请问怎么解决,多谢

解决方案 »

  1.   


     when exists(select 1 from students where new.sname=sname) and exists(select 1 from courses where new.cname=cname)
      

  2.   

    把when语句去掉,
    条件写在block里,比如:
    ...
    begin
    select count(1) into n from students where sname = :new.sname;
    if n>0 then
    ...
    end if;
    end;
      

  3.   

    when里不允许子查询,
    可以转换思路,在触发体中判断。