日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL语言基础:触发器相关知识介绍​

發布時間:2023/12/10 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL语言基础:触发器相关知识介绍​ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ?

?

1、觸發器 Trigger介紹

觸發器可以實現完整性規則和保證一些復雜業務規則的實施。針對示警或滿足特定 條件下自動執行某項任務來說,觸發器是十分有用的機制。觸發器是由事件1驅動的特殊過程,一旦由某個用戶定義,任何用戶對該觸發器指定的數據新增、刪除、修改操作,系統會自動激活相應的觸發器,在核心層進行集中的完整性控制。

2、觸發器特點

1) 當數據庫開發者聲明事件發生時,觸發器激活,事件可以是對某個特定關系的插入、刪除、更新。

2) 觸發器被事件激活后,不是立即執行,而是先由觸發器測試觸發條件,若條件不成立,響應該事件的觸發器將不做任何處理。

3) 如果觸發器的申明條件滿足時,則與該觸發器相連的動作由DBMS執行。可以阻止事件、撤銷事件。

注意事項:

1)觸發器為數據庫對象時,創建觸發器必須指定名稱、在其定義觸發器的表、觸發器觸發時機、觸發器做什么事情。觸發器不能作用在臨時表,但可以引用臨時表。

3、觸發器分類

行級觸發器:對事件影響的每一行(FOR EACH ROW) ,每一元組執行。

語句級觸發器:對整個事件只執行一次觸發過程(FOR EACH STATEMENT)。是觸發器默認方式。

4、創建觸發器

觸發器定義包括:觸發器的觸發事件、觸發器執行的動作。針對update操作中還可以指定特定的屬性或屬性組的修改為觸發條件。事件的觸發還有兩個相關時間:before、after。

  • before:觸發器是在事件發生之前觸發。

  • after:觸發器是在事件發生之后觸發。

創建觸發器語法格式:

create trigger <觸發器名稱>[{after|before}] {[delete|update|updateof[列名清單]]} on 表名 [referencing <臨時視圖名稱>] [when<觸發條件>] begin <觸發動作> end [觸發器]

參數說明:

  • before:說明DBMS在執行觸發語句之前激發觸發器。

  • after:說明DBMS在執行觸發語句之后激發觸發器。

  • delete:delete觸發器,每當一個delete語句從表中刪除一行時激發觸發器。

  • insert:insert,每當一個insert語句從表中插入一行時激發觸發器。

  • update:update觸發器,每當update語句修改由of子句指定的列值時激發觸發器。如果忽略of子句,表示任何列值時,DBMS都將激發觸發器。

  • referencing <臨時視圖名稱>:指定臨時視圖的別名。在觸發器運行過程中,系統會生成兩個臨時視圖,分別存放更新值(舊值)、更新后的值(新值)。

  • 行級觸發器:默認臨時視圖名分別是OLD、NEW。

  • 語句觸發器:默認臨時視圖名分別是OLD-TABLE、NEW-TABLE。觸發器結束臨時視圖也會隨著銷毀。

  • WHEN<觸發條件>:指定觸發器的觸發條件。只有條件滿足觸發條件時,才會激發觸發器。觸發條件必須包含臨時視圖名、不包含查詢。

  • 針對示警或滿足特定條件下自動執行某項任務來說,觸發是非常有用的機制。

5、更改觸發器

語法格式:

alter trigger <觸發器名> [{after|before}] {[delete|update|updateof[列名清單]]} on 表名 [referencing <臨時視圖名稱>] [when<觸發條件>] begin要執行的SQL語句 end

6、刪除觸發器

drop trigger <觸發器名>[,...n]

說明:n表示可以指定多個觸發器的占位符。

7、完整示例

- 需求:當向員工表插入一條記錄時,希望mysql自動同時往日志表插入數據 -- 創建觸發器(添加)-- 當往員工表插入一條記錄時 CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW INSERT INTO test_log(content) VALUES('員工表插入了一條記錄'); -- 當往員工表修改一條記錄時 CREATE TRIGGER tri_empUpd AFTER UPDATE ON employee FOR EACH ROW INSERT INTO test_log(content) VALUES('員工表修改了一條記錄'); -- 當往員工表刪除一條記錄時 CREATE TRIGGER tri_empDel AFTER DELETE ON employee FOR EACH ROW INSERT INTO test_log(content) VALUES('員工表刪除了一條記錄'); -- 刪除創建觸發器 DROP TRIGGER tri_empAdd;

觸發器事件:數據庫表行的插入、刪除、修改。也就是執行insert、delete、update語句。

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

總結

以上是生活随笔為你收集整理的SQL语言基础:触发器相关知识介绍​的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。