程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle 觸發器語法及實例(一)

Oracle 觸發器語法及實例(一)

編輯:關於Oracle數據庫

  一 Oracle觸發器語法

  觸發器是特定事件出現的時候,自動執行的代碼塊。類似於存儲過程,觸發器與存儲過程的區別在於:存儲過程是由用戶或應用程序顯式調用的,而觸發器是不能被直接調用的。

  功能:

  1、 允許/限制對表的修改

  2、 自動生成派生列,比如自增字段

  3、 強制數據一致性

  4、 提供審計和日志記錄

  5、 防止無效的事務處理

  6、 啟用復雜的業務邏輯

  觸發器觸發時間有兩種:after和before。

  1、觸發器的語法:

  CREATE [OR REPLACE] TIGGER觸發器名 觸發時間 觸發事件

  ON表名

  [FOR EACH ROW]

  BEGIN

  pl/sql語句

  END

  其中:

  觸發器名:觸發器對象的名稱。

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

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

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

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

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

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

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

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

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

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

  2、舉例:

  下面的觸發器在更新表auths之前觸發,目的是不允許在周末修改表:

   createtriggerauth_securebeforeinsertorupdateordelete//對整表更新前觸發
  onauths
  begin
  if(to_char(sysdate,'DY')='SUN'
  RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');
  endif;
  end

  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
  • 尾頁
  • 共3頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved