【我的javaEE學習】數據庫觸發器的簡單入門

       觸發器的定義就是說某個條件成立的時候,觸發器裏面所定義的語句就會被自動的執行。因此觸發器不需要人爲的去調用,也不能調用。然後,觸發器的觸發條件其實在你定義的時候就已經設定好了。觸發器可以分爲語句級觸發器和行級觸發器。

 

1、在一個表中定義的語句級的觸發器,當這個表被刪除時,程序就會自動執行觸發器裏面定義的操作過程。這個就是刪除表的操作就是觸發器執行的條件了。

2、在一個表中定義了行級的觸發器,那當這個表中一行數據發生變化的時候,比如刪除了一行記錄,那觸發器也會被自動執行了。

 

觸發器的語法:

  create [or replace] tigger 觸發器名 觸發時間 觸發事件  on 表名

   [for each row]

  begin

    pl/sql語句

  end

 

其中:

    觸發器名:觸發器對象的名稱。由於觸發器是數據庫自動執行的,因此該名稱只是一個名稱,沒有實質的用途。

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

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

             after:表示在數據庫動作之後觸發器執行。

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

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

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

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

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

    for each row:對錶的每一行觸發器執行一次。如果沒有這一選項,則只對整個表執行一次。

 

功能:

1、 允許/限制對錶的修改          2、 自動生成派生列,比如自增字段

3、 強制數據一致性               4、 提供審計和日誌記錄

5、 防止無效的事務處理           6、 啓用複雜的業務邏輯

 

舉例

觸發器在更新表tb_emp之前觸發,目的是不允許在週末修改表:

create or replace trigger auth_secure before insert or update or DELETE

on tb_emp

begin

  IF(to_char(sysdate,'DY')='星期日') THEN

    RAISE_APPLICATION_ERROR(-20600,'不能在週末修改表tb_emp');

  END IF;

END;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章