觸發器在數據庫裏以獨立的對象存儲,它與存儲過程不一樣的是,存儲過程經過其它程序來啓動運行,而觸發器是由一個事件來啓動運行。sql
1. 觸發器特性數據庫
1>觸發器是當某個事件發生時自動的運行。
oracle
2>觸發器不能接收參數。code
3>oracle事件指的是對數據庫表進行的insert、update、delete等操做。對象
2. 觸發器組成
事件
2.1 觸發事件:引發觸發器被觸發的事件。例如:insert、update、delete等語句對錶或視圖的操做。class
2.2 觸發時間:即該trigger是在觸發事件發生以前仍是以後觸發。date
2.3 觸發操做:即該trigger被觸發以後的目的和意圖,就是觸發器自己要作的事情。
程序
2.4 觸發對象:包括表、視圖、模式、數據庫等,只有在這些對象上發生了符合觸發條件的觸發事件,纔會執行觸發操做。im
2.5 觸發條件:由when子句指定一個邏輯表達式,只有當該表達式的值爲true時,遇到觸發事件纔會自動執行觸發器,使其執行觸發操做。
2.6 觸發頻率:說明觸發器內定義的動做被執行的次數。即語句級觸發器(statement)和行級(row)觸發器。
語句級觸發器:當某觸發事件發生時,該觸發器只執行一次。
行級觸發器:當某觸發事件發生時,對受到該操做影響的每一行數據,觸發器都單獨執行一次。
3. 建立觸發器實例
create or replace trigger demo before insert on t_user declare -- local variables here begin dbms_output.put_line('該觸發器已被執行!'); end demo;
向t_user表中添加數據
insert into t_user (user_id, user_name, gender, age, telephone) values (5, '王老吉', '0', 10, '13269368569')
查看觸發器是否被執行