请教下,触发器中的
select count(*) into n from AA.BB
其中AA表示什么,是不是用户名,这个用户名与当前登录用户之间需满足什么关系?
例子是下面一段代码,我试了下,去掉AA.在本用户下创建一个BB表好像没有什么问题,但是如果在AA用户下建立一个BB表,这个触发器怎么感觉有点问题。
----------------------------------------create or replace trigger trig_cb_dklsysqb_gxczjlb
  after insert or update or delete on cb_dklslysqb  
  for each row
declare
  -- local variables here
  nMaxbsm number(1);
begin
  if inserting or updating then
  begin
    --删除老记录
    delete from JSYDSPLS.GXCZJLB where trim(lybh) = trim(:new.bi_code) and xmlx = 5;   
   --新增记录       
    begin
    select max(bsm) into nMaxbsm from JSYDSPLS.GXCZJLB;
    exception
    when no_data_found then
      nMaxbsm := 0;         
    end;       
    insert into JSYDSPLS.GXCZJLB(bsm,LYBH,XMLX,GXSJ,SXRKZT,TXRKZT,CZLX,chbh,gbbs) values(nMaxbsm+1,:new.bi_code,5,sysdate,0,0,1,:new.chbh,0);       
  end;      
  end if;
  if deleting then
     --删除老记录
     delete from JSYDSPLS.GXCZJLB where trim(lybh) = trim(:old.bi_code) and xmlx = 5;
     --新增记录  
    begin
      select max(bsm) into nMaxbsm from JSYDSPLS.GXCZJLB;
      exception
      when no_data_found then
        nMaxbsm := 0;         
    end;       
    insert into JSYDSPLS.GXCZJLB(bsm,LYBH,XMLX,GXSJ,SXRKZT,TXRKZT,CZLX,chbh,gbbs) values(nMaxbsm+1,:old.bi_code,5,sysdate,0,0,0,:old.chbh,0);                
  end if;   end trig_cb_dklsysqb_gxczjlb;

解决方案 »

  1.   

    AA就是用户名 和你当前登录用户不需要有什么关系。但是你当前未必有操作AA的表的权限,如果有权限就不会有问题。
      

  2.   

    aa.bb 即 aa用户的bb表,一般来说,与当前登录用户没有必然联系,主要登录用户有对表的相关操作权限。
    如用aa用户登录,授权给scott用户
    grant delete on bb to scott;
    那么,用scott用户就可以删除aa用户的bb表了
      

  3.   

    select count(*) into n from AA.BB
    AA.BB表示AA用户下的BB表。这个用户名与当前登录用户之间需满足什么关系?
    当前用户必须对AA.BB表有必要的权限(增删改等等)。你的代码里都是对JSYDSPLS.GXCZJLB表的操作,所以你本用户对JSYDSPLS.GXCZJLB表没权限的话,就不会有触发了
      

  4.   

    怎么查看是否对这个表有操作权限呢。另外,我用C这个账号登陆进行的上述操作,你们所说的AA用户是不是我在C账户登陆下在users这个里头的JSYDSPLS的objects的tables中看到的GXCZJLB
      

  5.   

    大概知道是哪块代码有问题了   --新增记录       
        begin
        select max(bsm) into nMaxbsm from JSYDSPLS.GXCZJLB;
        exception
        when no_data_found then
          nMaxbsm := 0;         
        end;      这块代码好像有问题