概念:
與表相關聯的plsql程式,當執行dml(增刪改)自動執行觸發器;
建立語法:
create or replace trigger 觸發器名
before|after—在dml之前或者之後;
delete|insert|update [of 列名]–dml語句
on 表名----操作某個表
for each row----對某行資料進行操作
。。。。。plsql**
無論修改多少行,觸發器只執行一次
原因:預設是語句級觸發器,作用於表,只執行一次;
型別:
1 語句級觸發器:
2 行級觸發器:
作用於每一行,每滿足一次條件,都執行一次觸發器;可以執行多次。
舉例
--建立觸發器logupdate
--行級觸發,update一次,觸發一次!
create
orreplace
trigger logeachrow
before insert
on stu
for each row
declare
begin
dbms_output.put_line(
'每行執行成功!!');
刪除觸發器drop trigger trigger_name;
--禁止在非工作時間插入員工資訊,非工作時間周四,週六,週日 ,除去9:00--18:00;
create
orreplace
trigger securitystu
before insert
on stu
begin
--校驗,不正常
if to_char(sysdate,
'day')in
('星期六'
,'星期日'
,'星期四'
)or to_number(to_char(sysdate,
'hh24'))
notbetween
9and18-
20001
,'禁止非工作時間插入員工資訊!');
new和old兩個特殊變數:new --引用最新的列值;
:old --引用以前的列值;
這兩個變數只有在使用了關鍵字 "for each row"時才存在.
且update語句兩個都有,而insert只有:new ,delete 只有:old;
create
orreplace
trigger checksalary
before update
on emp
for each row
declare
begin
-20000
,'漲後工資不能小於漲前工資');
資料校驗
ORACLE觸發器 行級觸發器
行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸發器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例乙個簡單的...
Oracle觸發器介紹 行級觸發器
行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸 髮器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例一 個簡...
Oracle觸發器簡介 建立 使用觸發器
觸發器類似與儲存過程,都是為了實現特殊功能而執行的 塊。觸發器不允許使用者顯示傳遞引數,不能夠返回引數值,不允許使用者呼叫觸發器。觸發器只是在oracle合適的時間自動呼叫,非常類似於面向程式設計中的 觸發器按照觸發事件型別 物件不同分為 語句觸發器,行觸發器,instead of觸發器,系統事件觸...