Oracle修煉路程 觸發器

2021-10-05 08:32:17 字數 2738 閱讀 9419

概念:

與表相關聯的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觸發器,系統事件觸...