ORACLE產生數據庫觸發器的語法為:

 

    create [or replace] trigger 觸發器名 觸發時間 觸發事件

      on 表名

      [for each row]

      pl/sql 語句

    其中:

    觸發器名:觸發器對象的名稱。由于觸發器是數據庫自動執行

              的,因此該名稱只是一個名稱,沒有實質的用途。

    觸發時間:指明觸發器何時執行,該值可取:

              before---表示在數據庫動作之前觸發器執行;

              after---表示在數據庫動作之后出發器執行。

    觸發事件:指明哪些數據庫動作會觸發此觸發器:

              insert:數據庫插入會觸發此觸發器;

              update:數據庫修改會觸發此觸發器;

              delete:數據庫刪除會觸發此觸發器。

    表    名:數據庫觸發器所在的表。

    for each row:對表的每一行觸發器執行一次。如果沒有這一

                  選項,則只對整個表執行一次。

    舉例:下面的觸發器在更新表auths之前觸發,目的是不允許在

          周末修改表:

    create trigger auth_secure

      before insert or update or delete  //對整表更新前觸發

      on auths

    begin

      if(to_char(sysdate,'DY')='SUN'

        RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');

      end if;

    end



----------------------------
create trigger biufer_employees_department_id

         before insert or update

                of department_id

                on employees

         referencing old as old_value

                         new as new_value

         for each row

         when (new_value.department_id<>80 )

  begin

         :new_value.commission_pct :=0;

  end;

  /