中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用數據庫觸發器實現數據的同步

發布時間:2021-11-04 11:54:54 來源:億速云 閱讀:194 作者:iii 欄目:關系型數據庫

本篇內容主要講解“怎么利用數據庫觸發器實現數據的同步”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么利用數據庫觸發器實現數據的同步”吧!

一、什么是觸發器

數據庫觸發器是一個與表相關聯的,存儲的PL/SQL 語句。每當一個特定的數據操作語句(insert update delete)在指定的表上發出時,Oracle自動執行觸發器中定義的語句序列。

觸發器的應用場景如下:

  • 復雜的安全性檢查

  • 數據的確認

  • 數據庫審計

  • 數據的備份和審計

二、創建Oracle觸發器的語法

1
2
3
4
5
6
7
8
9
CREATE [OR REPLACE] TRIGGER trigger_name                                    
{BEFORE | AFTER }                                    
{INSERT | DELETE | UPDATE [OF column [, column …]]}                                    
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]                                    
ON [schema.]table_name | [schema.]view_name                                    
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]                                    
[FOR EACH ROW ]                                    
[WHEN condition]                                    
PL/SQL_BLOCK | CALL procedure_name;                                    

其中:

  • BEFORE 和AFTER指出觸發器的觸發時序分別為前觸發和后觸發方式,前觸發是在執行觸發事件之前觸發當前所創建的觸發器,后觸發是在執行觸發事件之后觸發當前所創建的觸發器。

  • FOR EACH ROW選項說明觸發器為行觸發器。

  • 行觸發器和語句觸發器的區別表現在:行觸發器要求當一個DML語句操走影響數據庫中的多行數據時,對于其中的每個數據行,只要它們符合觸發約束條件,均激活一次觸發器;而語句觸發器將整個語句操作作為觸發事件,當它符合約束條件時,激活一次觸發器。

  • 當省略FOR EACH ROW 選項時,BEFORE 和AFTER 觸發器為語句觸發器,而INSTEAD OF 觸發器則只能為行觸發器

  • REFERENCING 子句說明相關名稱,在行觸發器的PL/SQL塊和WHEN 子句中可以使用相關名稱參照當前的新、舊列值,默認的相關名稱分別為OLD和NEW。觸發器的PL/SQL塊中應用相關名稱時,必須在它們之前加冒號(:),但在WHEN子句中則不能加冒號。

  • WHEN 子句說明觸發約束條件。Condition 為一個邏輯表達時,其中必須包含相關名稱,而不能包含查詢語句,也不能調用PL/SQL 函數。WHEN 子句指定的觸發約束條件只能用在BEFORE 和AFTER 行觸發器中,不能用在INSTEAD OF 行觸發器和其它類型的觸發器中。

  • 當一個基表被修改( INSERT, UPDATE, DELETE)時要執行的存儲過程,執行時根據其所依附的基表改動而自動觸發,因此與應用程序無關,用數據庫觸發器可以保證數據的一致性和完整性。

三、Oracle觸發器的類型

  • 行級觸發器:對DML語句影響的每個行執行一次,例如,一條update語句更新了100條數據,如果我們針對update定義了行級觸發器,那么行級觸發器將會被觸發100次 。

  • 語句級觸發器:對每個DML語句執行一次,例如,一條update語句更新了200條數據,如果我們針對update定義了語句級觸發器,那么語句級觸發器將會被觸發1次 。

四、利用數據庫觸發器實現數據的同步

1
2
3
4
5
6
7
8
9
create or replace trigger sync_salary                                    
after update                                    
on emp                                    
for each row                                    
begin                                    
  --當主表更新后,自動更新備份表。                                    
  update emp_back set sal=:new.sal where empno=:new.empno;                                    
end;                                    
/                                    
  • 在上面的例子中,當我們更新了主表emp的薪水后,這個行級觸發器將會被自動執行更新備份表中的員工的薪水。

到此,相信大家對“怎么利用數據庫觸發器實現數據的同步”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

封开县| 郓城县| 遵义县| 龙游县| 天柱县| 涪陵区| 大竹县| 海南省| 那坡县| 太康县| 孝昌县| 扎赉特旗| 托克托县| 永仁县| 无棣县| 晋城| 昆明市| 宜兴市| 武威市| 全南县| 新竹县| 新泰市| 潞西市| 静乐县| 新密市| 信阳市| 安西县| 盖州市| 霞浦县| 泰州市| 三门峡市| 封开县| 大英县| 郧西县| 繁昌县| 金湖县| 扎鲁特旗| 彭水| 江陵县| 阿拉善左旗| 明星|