成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle數據庫中有關觸發器問題

數據庫 Oracle
oracle數據庫是一種大型數據庫系統,一般應用于商業,政府部門,它的功能很強大,能夠處理大批量的數據,在網絡方面也用的非常多。觸發器(trigger)是個特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,oracle數據庫中觸發器又有那些問題吶?

觸發器是一種特殊類型的存儲過程,它不同于存儲過程。觸發器主要是通過事件進行觸發而被執行的,觸發器的觸發事件分可為3類,分別是DML事件、DDL事件和數據庫事件,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如UPDATE、 INSERT、 DELETE 這些操作時,SQL Server 就會自動執行觸發器所定義的SQL 語句,從而確保對數據的處理必須符合由這些SQL 語句所定義的規則。下面介紹oracle數據庫中中的觸發器存在的問題。

  觸發器是特定事件出現的時候,自動執行的代碼塊。類似于存儲過程,但是用戶不能直接調用他們。

觸發器功能

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

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

  3、 強制數據一致性

  4、 提供審計和日志記錄

  5、 防止無效的事務處理

  6、 啟用復雜的業務邏輯

觸發器種類

  觸發器的種類可劃分為4種:

  1. 數據操縱語言(DML)觸發器
  2. 替代(INSTEAD OF)觸發器
  3. 數據定義語言(DDL)觸發器
  4. 數據庫事件觸發器

  數據操縱語言(DML)觸發器:簡稱DML觸發器,是定義在表上的觸發器,創建在表上。由DML事件引發的觸發器,編寫DML觸發器時的兩點要素是: 1.確定觸發的表,即在其上定義觸發器的表。2.確定觸發的事件,DML觸發器的觸發事件有INSERT、UPDATE和DELETE三種; 替代觸發器,簡稱INSTEAD OF觸發器,創建在視圖上,用來替換對視圖進行的刪除、插入和修改操作; 數據定義語言(DDL)觸發器,簡稱DDL觸發器,定義在模式上,觸發事件是數據對象的創建和修改; 數據庫事件觸發器,定義在整個數據庫或模式上,觸發事件是數據庫事件.

#p#

ORACLE產生數據庫觸發器的語法為:

  CREATE [OR REPLACE] TRIGGER 觸發器名

  {BEFORE|AFTER|INSTEAD OF} 觸發事件1 [OR 觸發事件2...]

  ON 表名

  WHEN 觸發條件

  [FOR EACH ROW]

  DECLARE

  聲明部分

  BEGIN

  主體部分

  END;

Oracle數據庫中有關觸發器問題(2)

  其中:

觸發器名:觸發器對象的名稱。由于觸發器是數據庫自動執行的,因此該名稱只是一個名稱,沒有實質的用途。一個觸發器可由多個不同的數據操縱語言操作觸發。在觸發器中,可用INSERTING、DELETING、UPDATING謂詞來區別不同的數據操縱語言操作。這些謂詞可以在IF分支條件語句中作為判斷條件來使用。

觸發時間:指明觸發器何時執行,該值可取, 觸發的時間有BEFORE和AFTER兩種,分別表示觸發動作發生在DML語句執行之前和語句執行之后。確定觸發級別,有語句級觸發器和行級觸發器兩種。語句級觸發器表示SQL語句只觸發一次觸發器,行級觸發器表示SQL語句影響的每一行都要觸發一次。

Before:表示在數據庫動作之前觸發器執行; 在SQL語句的執行過程中,如果存在行級BEFORE觸發器,則SQL語句在對每一行操作之前,都要先執行一次行級BEFORE觸發器,然后才對行進行操作。如果存在行級AFTER觸發器,則SQL語句在對每一行操作之后,都要再執行一次行級AFTER觸發器。

after:表示在數據庫動作之后出發器執行。如果存在語句級AFTER觸發器,則在SQL語句執行完畢后,要最后執行一次語句級AFTER觸發器。

觸發事件:指明哪些數據庫動作會觸發此觸發器,指INSERT、DELETE或UPDATE事件,事件可以并行出現,中間用OR連接;

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

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

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

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

for each row:表示觸發器為行級觸發器,省略則為語句級觸發器,對表的每一行觸發器執行一次。

觸發器的創建者或具有DROP ANY TIRGGER系統權限的人才能刪除觸發器。刪除觸發器的語法如下:

DROP TIRGGER 觸發器名

  可以通過命令設置觸發器的可用狀態,使其暫時關閉或重新打開,即當觸發器暫時不用時,可以將其置成無效狀態,在使用時重新打開。該命令語法如下:

  ALTER TRIGGER 觸發器名 {DISABLE|ENABLE}

  其中,DISABLE表示使觸發器失效,ENABLE表示使觸發器生效。

  同存儲過程類似,觸發器可以用SHOW ERRORS 檢查編譯錯誤。

  如果有多個觸發器被定義成為相同時間、相同事件觸發,且最后定義的觸發器是有效的,則最后定義的觸發器被觸發,其他觸發器不執行。觸發器體內禁止使用COMMIT、ROLLBACK、SAVEPOINT語句,也禁止直接或間接地調用含有上述語句的存儲過程。定義一個觸發器時要考慮上述多種情況,并根據具體的需要來決定觸發器的種類。

#p#

觸發器的作用

  觸發器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據的一致性。除此之外,觸發器還有其它許多不同的功能:

  (1) 強化約束(Enforce restriction)

  觸發器能夠實現比CHECK 語句更為復雜的約束。

  (2) 跟蹤變化Auditing changes

  觸發器可以偵測數據庫內的操作,從而不允許數據庫中未經許可的指定更新和變化。

  (3) 級聯運行(Cascaded operation)。

  觸發器可以偵測數據庫內的操作,并自動地級聯影響整個數據庫的各項內容。例如,某個表上的觸發器中包含有對另外一個表的數據操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。

  (4) 存儲過程的調用(Stored procedure invocation)。

  為了響應數據庫更新觸,發器可以調用一個或多個存儲過程,甚至可以通過外部過程的調用而在DBMS( 數據庫管理系統)本身之外進行操作。

  由此可見,觸發器可以解決高級形式的業務規則或復雜行為限制以及實現定制記錄等一些方面的問題。例如,觸發器能夠找出某一表在數據修改前后狀態發生的差異,并根據這種差異執行一定的處理。此外一個表的同一類型(INSERT、 UPDATE、 DELETE)的多個觸發器能夠對同一種數據操作采取多種不同的處理。

  總體而言,觸發器性能通常比較低。

  當運行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因為這些表既不在內存中也不在數據庫設備上,而刪除表和插入表總是位于內存中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。觸發器的功能強大,輕松可靠地實現許多復雜的功能,盡管如此,觸發器還是要慎用的,觸發器本身沒有過錯,但由于我們的濫用會造成數據庫及應用程序的維護困難。在數據庫操作中,我們可以通過關系、觸發器、存儲過程、應用程序等來實現數據操作…… 同時規則、約束、缺省值也是保證數據完整性的重要保障。如果我們對觸發器過分的依賴,勢必影響數據庫的結構,同時增加了維護的復雜程序。

【編輯推薦】

  1. Oracle數據庫性能優化策略的選擇
  2. Oracle數據庫啟動和關閉方式總結
  3. 帶您了解Oracle數據庫的段
  4. 帶您深入了解Oracle觸發器
  5. SQL Server約束和觸發器的區別
責任編輯:迎迎 來源: 天極網
相關推薦

2011-05-20 14:06:25

Oracle觸發器

2011-08-04 11:00:35

Oracle數據庫虛擬列復合觸發器

2009-11-18 13:15:06

Oracle觸發器

2011-05-19 14:29:49

Oracle觸發器語法

2011-04-14 13:54:22

Oracle觸發器

2019-10-22 07:50:45

SqlServer數據庫觸發器

2010-04-15 15:32:59

Oracle操作日志

2010-06-30 09:36:25

SQL Server

2011-04-01 16:35:09

SQL Server數觸發器

2010-04-23 12:50:46

Oracle觸發器

2011-08-10 16:46:01

DB2數據庫觸發器

2011-05-20 14:39:28

2010-04-09 09:07:43

Oracle游標觸發器

2010-09-13 16:46:10

SQL Server觸

2019-04-30 15:28:46

數據庫存儲過程觸發器

2010-10-25 14:09:01

Oracle觸發器

2023-09-13 08:36:59

Oracle數據庫

2010-07-23 15:26:29

SQL Server

2011-04-02 15:05:23

觸發器數據庫

2024-01-19 09:37:19

MySQL數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美色偷拍 | 性一爱一乱一交一视频 | 欧洲亚洲视频 | 国产日韩免费视频 | 二区国产| 国产精品久久久久久久久久久久久久 | 日日做夜夜爽毛片麻豆 | 91视频精选| 国产91综合一区在线观看 | 日韩欧美高清 | 亚洲精品视频一区 | 超碰成人av | 播放一级黄色片 | 午夜婷婷激情 | 国产乱码久久久久久一区二区 | 欧美黄色性生活视频 | 欧美韩一区二区三区 | 欧美日韩精品一区二区三区四区 | 中文在线一区二区 | 国产在线二区 | 久久久噜噜噜www成人网 | 97综合在线 | 射欧美 | 久久久久久91香蕉国产 | 国产精品国产精品国产专区不卡 | 91亚洲国产成人久久精品网站 | 国产精品一区二区久久精品爱微奶 | 国产精品视频免费 | 欧美视频 | 黄色免费在线观看 | 亚洲大片 | 久久久精品日本 | 日韩色视频 | 动漫www.被爆羞羞av44 | 亚洲高清在线 | 欧美一区在线视频 | 亚洲一区二区三区高清 | 国产999精品久久久 精品三级在线观看 | 天堂中文在线播放 | 久久国产精品一区二区 | 国产一区2区 |