觸發器與光標
在數據庫中,觸發器是當表/視圖中發生某些特定事件時自動執行的過程(代碼段)。在它的其他用途中,觸發器主要用於維護數據庫的完整性。遊標是數據庫中用來遍歷數據庫記錄的控制結構。它與許多編程語言提供的迭代器非常相似。
什麼是觸發器?
觸發器是當數據庫的表/視圖中發生某些特定事件時自動執行的過程(代碼段)。在它的其他用途中,觸發器主要用於維護數據庫的完整性。觸發器還用於強制執行業務規則、審核數據庫中的更改和複製數據。最常見的觸發器是數據操作語言(datamanipulationlanguage,DML)觸發器,在數據**縱時觸發。一些數據庫系統支持非數據觸發器,這些觸發器在數據定義語言(DDL)事件發生時觸發。一些示例是在創建表時、在執行提交或回滾操作等過程中激發的觸發器。這些觸發器特別可用於審核。Oracle數據庫系統支持模式級觸發器(即修改數據庫模式時觸發的觸發器),如創建後、更改前、更改後、刪除前、刪除後等。Oracle支持的四種主要觸發器類型是行級觸發器、列級觸發器、列級觸發器,每行類型觸發器和For Each語句類型觸發器。
什麼是光標?
遊標是數據庫中用來遍歷數據庫記錄的控制結構。它與許多編程語言提供的迭代器非常相似。除了遍歷數據庫中的記錄之外,遊標還可以幫助數據檢索、添加和刪除記錄。通過定義正確的方式,還可以使用光標向後遍歷。當SQL查詢返回一組行時,這些行實際上是使用遊標處理的。在使用遊標之前,需要聲明並分配一個名稱。然後需要使用OPEN命令打開光標。此操作將光標放在記錄結果集的第一行之前。然後,遊標必須執行FETCH操作才能將一行數據真正地放入應用程序。最後,必須使用CLOSE操作關閉光標。關閉的光標可以再次打開。
觸發器和遊標有什麼區別?