oracle資料庫物件--觸發器(TRIGGER)__Python

來源:互聯網
上載者:User
觸發器 TRIGGER

一向百毒不侵的我竟然在這個關節眼上感冒了,腦袋也昏昏的,一迷糊就不知道在想什麼,賊難受,咳咳咳咳.
今天介紹一下,oralce 資料庫中的另一個基本對象–觸發器,如果你瞭解了儲存函數和預存程序,那麼瞭解觸發器就特別簡單了,因為本身觸發器也是一塊pl/sql程式塊,有定義,有聲明,有執行等等,然而和儲存函數或過程不同的是:過程和函數是需要外界調用,或主動調用才能執行的,而觸發器則是觸發器是有一個事件來啟動和啟動並執行,也就是當事件發生時,隱式的觸發執行的,且觸發器不能接受參數。
oracle事件包括 對錶的 insert update delete 以及對視圖的相應操作。該篇主要介紹關於dml觸發器,其他的替代觸發器和系統觸發器,有需要的可以去瞭解。

觸發器4個基本組成:
(1)觸發事件:即在什麼事件發生時觸發,常見事件如 insert  ,update,delete;
(2)觸發時間:這裡的時間是相對於事件發生前後來說的,可以定義在事件發生之前和事件發生之後 before | after
(3)觸發器本身:這是關鍵,也就是我們為什麼要建立這個觸發器,要用它做什麼,觸發器的主體,一段pl/sql程式塊
(4)觸發器頻率:說明觸發器內,在事件發生時,觸發的頻率,常見有語句級觸發器和行級觸發器,語句級就是該條語句執行一次,觸發器觸發一次,而行級觸發器則是每操作一行就執行一次觸發器,定義時需要添加(for each row)

基本格式:
 CREATE [OR REPLACE] TRIGGER trigger_name
 {before | after}
 {insert | update | delete}
 on table_name
 [for each row]
 [where condition]
 begin
  執行體
  end;

直接看兩個樣本吧

//在每刪除員工表的一條記錄時就將要刪除的資料,拷貝到員工刪除表中;create table delempasselect * from emplooyees where 1=2;------------------------------------------------create or replace trigger copy_tribefore                                      //刪除之前觸發delete on employeesfor each row                         //刪除每一行資料都觸發begin insert into delemp(employee_id,last_name,salary) values(:old.employee_id,:old.last_name,:old.salary);end;//這裡提一下關於:old   ,和:new:old  代表修飾符訪問操作完成前的值;:new 代表修飾符訪問操作完成後的值。

當刪除表和視圖時,該表所對應的觸發器也會刪除,我們也可以使用語句
drop trigger trigger_name;

後續完善,頭疼的厲害。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.