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及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271221.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271221.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271221.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

socket與socketServer通信

服務端代碼&#xff1a; public class TalkServer {public static void main(String args[]){try {//創建服務器&#xff0c;開放7777端口ServerSocket server new ServerSocket(7777);while(true){Socket socket server.accept();System.out.println("客戶端與服務端已…

java struts2值棧ognl_Struts2的值棧和OGNL牛逼啊

Struts2的值棧和OGNL牛逼啊一 值棧簡介&#xff1a;值棧是對應每個請求對象的一套內存數據的封裝&#xff0c;Struts2會給每個請求創建一個新的值棧&#xff0c;值棧能夠線程安全的為每個請求提供公共的數據存取服務。二 OGNL介紹&#xff1a;(1)基本數據&#xff1a;OGNL 是對…

還在用 Notepad++嗎? 盤點五款更好用的文本編輯器

來自&#xff1a;oschina.net/news/110987/no-notepad-plus-plus | 責編&#xff1a;樂樂正文 Notepad 一直飽受爭議&#xff0c;2018年開始然后引發了大家的關注&#xff0c;這里師長作為技術媒體&#xff0c;不方便帶啥節奏&#xff0c;具體事件內容請大家自行百度。其實作…

python3列表_Python3 列表List(十一)

list是一種有序可重復的集合&#xff0c;可以隨時添加和刪除其中的元素。序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置&#xff0c;或索引&#xff0c;第一個索引是0&#xff0c;第二個索引是1&#xff0c;依此類推。Python有6個序列的內置類型…

ubuntu14.04 boost動態庫找不到 libboost_system.so.1.58.0

error while loading shared libraries: : cannot open shared object file: No such file or directory 解決辦法&#xff1a;向ld.so.conf文件中添加libboost_system.so.1.58.0所在的目錄路徑sudo vim /etc/ld.so.conf sudo ldconfig http://blog.csdn.net/smallfish0315/ar…

SQL語言:嵌入式SQL知識筆記

1、概念SQL提供了將SQL語句嵌入到某種高級語言中的使用方式&#xff0c;通常采用預編譯的方法將SQL語句嵌入高級語言中。采用的方法由DBMS的預處理程序對源程序進行掃碼、識別出SQL語句&#xff0c;把它們轉換為主語言調用語句&#xff0c;這樣可以讓主語言編譯程序能識別它&am…

Mysql bat腳本編寫_第一次編寫bat腳本

** 前言 **今天中午在宿舍不想做什么事&#xff0c;于是想到傻怡的電腦太卡了&#xff0c;多方面原因造成的&#xff0c;多軟件安裝于系統盤、安裝了沒用的殺毒軟件等等&#xff0c;但是對于windows系統來說呢&#xff0c;使用時間長了&#xff0c;會有很多的緩存文件、日志文件…

python 關閉窗口事件_關于python:如何在Tkinter中處理窗口關閉事件?

如何在Python Tkinter程序中處理窗口關閉事件(用戶單擊" X"按鈕)&#xff1f;Tkinter支持一種稱為協議處理程序的機制。在這里&#xff0c;術語協議是指應用程序和窗口管理器之間的交互。最常用的協議稱為WM_DELETE_WINDOW&#xff0c;用于定義當用戶使用窗口管理器顯…

windows+caffe(三)——求取圖片的均值

這個要在圖片已經轉化成lmdb格式下才能求均值。。。 1.查看caffe根目錄下的bin是否存在compute_image_mean.exe&#xff08;用的happey大神的&#xff09; 如果沒有存在&#xff0c;你需要打開MainBuilder.sln&#xff0c;右鍵compute_image_mean-僅用于項目-僅生成compute_ima…

硬盤知識:硬盤中藍盤、綠盤、黑盤、紅盤有什么區別?

今天給大家介紹一下電腦硬盤中藍盤、綠盤、黑盤、紅盤有什么區別&#xff1f;我們平常說的藍盤、黑盤、紅盤、綠盤這些通常指的是西部數據旗下所產的硬盤&#xff0c;通過各自的特點進行了上述的分類。從外觀上我們可以通過硬盤上貼的紙的顏色來區分。綠盤&#xff1a;監控盤&a…

java 框架mvc_JAVA框架-MVC模式

MVCMVC 模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用于應用程序的分層開發。Model(模型) - 模型代表一個存取數據的對象或 JAVA POJO。它也可以帶有邏輯&#xff0c;在數據變化時更新控制器。View(視圖) - 視圖代表模型包含的數據的可視化。Controller(…

python selenium 獲取同一元素的多個屬性_python+selenium如何獲取元素中并列的屬性值?...

獲取標簽內容使用element.attribute()方法獲取dom元素的內容&#xff0c;如&#xff1a;dr driver.find_element_by_id(tooltip)dr.get_attribute(data-original-title) #獲取tooltip的內容dr.text #獲取該鏈接的text獲取標簽屬性linkdr.find_element_by_id(tooltip)link.valu…

ndk學習6: 使用gdb調試ndk程序一

生成debug版程序 方法一: 使用ndk-build編譯時&#xff0c;加上如下參數NDK_DEBUG1&#xff0c;之后生成so文件之外&#xff0c;還會生成gdbobserver,gdb.setup調式文件 方法二: 修改AndroidManifest.xml文件,增加debuggable屬性為true <application android:debuggable&quo…

后端:C#操作Mongodb用法筆記

MongoDB 是一個基于分布式文件存儲的數據庫。由 C 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。今天主要給大家介紹一下C#編程語言下Mongodb的用法。開發環境為VS2015示例主要包括數據的增刪改查、分頁查詢、文件存儲等功能。有需要的朋友可以一起學習一下。…

計算機語言分為三種:機器語言、匯編語言和高級語言

計算機語言有哪幾種&#xff1f; 計算機語言分為三種&#xff1a;機器語言、匯編語言和高級語言 1.機器語言 機器語言是用二進制代碼表示計算機能直接識別和執行的一種機器指令的集合&#xff0c;它是計算機的設計者通過計算機的硬件結構賦予計算機的操作功能。 優點&#…

asp php java_ASP\JSP\PHP相比各有什么優缺點?

展開全部ASP、JSP、和PHP的優點e5a48de588b662616964757a686964616f31333366306538和缺點&#xff1a;一、ASP優點:1、無需編譯2、易于生成3、獨立于瀏覽器4、面向對象5、與任何ActiveX scripting 語言兼容6、源程序碼不會外漏缺點:1、Windows本身的所有問題都會一成不變的也累…

js變量提升_學習筆記:JS中的作用域和預解析

知識總結&#xff1a;謝靜賢、湯昊在javascript中作用域是非常重要的&#xff0c;本文將會說明作用域以及我們在工作&#xff0c;以及面試中的一些面試題&#xff0c;如果有不足的地方希望大家可以評論指出來&#xff0c;自己一定會及時的改正錯誤&#xff0c;避免大家走入一些…

ArcGIS Engine開發之旅09--幾何對象和空間參考

1.Geometry Geometry 是 GIS 中使用最為廣泛的對象集之一&#xff0c;用戶在創建、刪除、編輯和進行地理分析的時候&#xff0c;就是處理一個包含幾何形體的矢量對象&#xff1b;除了顯示要素意外&#xff0c;控件對象選擇&#xff0c;要素符號化&#xff0c;標注要素&#xf…