有没有办法在一个脚本中创建多个触发器?

Kam*_* K. 22 database oracle triggers plsql

我试图创建多个触发器,只需将一个脚本上传到Oracle DB/APEX工作区,并运行一次.

这是一个简短的脚本,与我试图使用的脚本相比:

    create or replace trigger "BI_TEC_ROLES"   
      before insert on "TEC_ROLES"               
      for each row  
    begin   
      if :NEW."ROLE_ID" is null then 
        select "TEC_ROLES_SEQ".nextval into :NEW."ROLE_ID" from dual; 
      end if; 
    end; 

    create or replace trigger "BI_TEC_STATUSES"   
      before insert on "TEC_STATUSES"               
      for each row  
    begin   
      if :NEW."STATUS_ID" is null then 
        select "TEC_STATUSES_SEQ".nextval into :NEW."STATUS_ID" from dual; 
      end if; 
    end; 

    create or replace trigger "BI_TEC_SUBS"   
      before insert on "TEC_SUBS"               
      for each row  
    begin   
      if :NEW."SUB_ID" is null then 
        select "TEC_SUBS_SEQ".nextval into :NEW."SUB_ID" from dual; 
      end if; 
    end; 
Run Code Online (Sandbox Code Playgroud)

我已经尝试将GO放在每个单独的块之间,但仍然只创建第一个触发器然后给出第二个说法的错误:

    Error(7,1): PLS-00103: Encountered the symbol "CREATE" 
Run Code Online (Sandbox Code Playgroud)

我希望有可能做到这一点.非常感谢您的时间和兴趣=)

Wol*_*olf 53

在每次触发后在新行上添加正斜杠以在缓冲区中执行命令:

create trigger...
...
end;
/
Run Code Online (Sandbox Code Playgroud)

  • @Kamron K.,在SQL Developer中,您需要单击"运行脚本(F5)"按钮来创建所有触发器(而不是主"运行语句"按钮). (5认同)

Tho*_*Low 5

在每个触发器语句之间的空行上放一个斜杠"/"作为第一个字符.这是与'go'等效的SQL*PLUS.