SQL語言基礎:觸發器相關知識介紹

2020-12-05 資料庫技術筆記

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}]

要執行的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語句。

相關焦點

  • sql server之insert觸發器使用
    什麼是觸發器觸發器(trigger)是SQL server 提供給程式設計師和數據分析員來保證數據完整性的一種方法,是一種特殊類型的存儲過程,它是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發。
  • 資料庫觸發器操作
    觸發器概述觸發器是一種特殊類型的存儲過程。一般的存儲過程通過存儲過程名稱被調用,而觸發器通過事件進行觸發而被執行 觸發器是一個功能強大的工具,它與表緊密相連,在表中數據發生變化時自動強制執行。觸發器可以用於SQL Server約束、默認值和規則的完整性檢查,還可以完成難以用普通約束實現的複雜功能。觸發器的優點 觸發器是在表(或視圖)中的數據被改變時自動執行的觸發器的類型AFTER 觸發器:是觸發器的默認類型。
  • 資料庫開發-SQL Server觸發器如何使用實例解析
    創建表結構1、採購單主表2、採購單明細表向表中插入數據1、插入採購單主表數據2、插入採購單從表數據需求代碼實現代碼解讀1、觸發器的語法:create trigger 觸發器的名字on 表名 after insert,update,delete
  • SQL中的觸發器–它會觸發什麼?
    舉報   SQL –與資料庫進行交互的直觀方式  SQL是一種用於與關係資料庫進行通信的普遍接受的資料庫語言
  • SQL語言基礎:資料庫語言概念介紹
    1、概念介紹SQL(Structured Query Lanauage)結構化查詢語言是關係資料庫中最普遍使用的語言。主要包括查詢、數據操縱、數據定義、數據控制功能,是一種通用的、功能強大的關係資料庫的標準語言。
  • Java資料庫編程教程,掌握MySql基礎知識
    Java資料庫編程教程,掌握MySql基礎知識,需要掌握需求分析、關係型資料庫用來描述實體與實體之間的關係、MySql資料庫伺服器、MySql得安裝和卸載、MySql的sql語句及操作相關的知識。
  • Quartz框架基礎知識
    本系列帶你學習Quartz相關知識,讓我們開始吧!一、介紹Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,是完全由java開發的一個開源的任務日程管理系統,「任務進度管理器」就是一個在預先確定(被納入日程)的時間到達時,負責執行(或者通知)其他軟體組件的系統。
  • 不用再學SQL語言了,Saleforce用自然語言就能在資料庫中查詢
    Salesforce 近期的一篇論文就介紹了利用機器學習,無需學習SQL語言就可以在資料庫中進行查詢。雷鋒網 AI 科技評論把相關報導編譯如下。CRM 軟體服務商 Salesforce 的人工智慧研究團隊就從自己的業務開始下手,探索如何讓不具備 SQL 知識的人通過機器學習打開資料庫操作的大門。
  • 基礎組合邏輯電路之邊沿觸發的D觸發器
    邊沿觸發器的電路結構可使觸發器在CP脈衝有效觸發沿到來前一瞬間接收信號,在有效觸發沿到來後產生狀態轉換,這種電路結構的觸發器大大提高了抗幹擾能力和電路工作的可靠性。下面以維持阻塞D觸發器為例介紹邊沿觸發器的工作原理。邏輯圖結構維持阻塞式邊沿D觸發器的邏輯圖。
  • SQL語言基礎:SQL語言概念知識筆記
    高度非過程化:SQL語言是高度非過程化語言,當進行數據操作時,只要指出做什麼,不需要指出如何做,存儲路徑對用戶是透明的,提高了數據的獨立性。面向集合的操作方式:操作對象、查詢結果可以是元組集合。兩種使用方式:終端直接輸入SQL命令對數據進行操作稱為自含式語言;將SQL語言嵌入到高級語言程序中,稱為嵌入式語言。
  • 老韓講mysql觸發器,很強大也很簡單
    陸陸續續講了表、用戶、權限、各種SQL語句、存儲過程,今天老韓來講一下觸發器,老韓從觸發器的概念、分類、創建、案例來對它進行一個講解,希望讀者朋友可以有所收穫。一、概念;簡單的說,就是一張表發生了某件事(插入、刪除、更新操作),然後自動觸發了預先編寫好的若干條SQL語句的執行;特點:觸發事件的操作和觸發器裡的SQL語句是一個事務操作,具有原子性,要麼全部執行,要麼都不執行;作用:保證數據的完整性,起到約束的作用;二、觸發器分類;觸發器大致分為表級觸發器和行級觸發器,很好理解
  • SQL語言基礎:SQL授權相關知識筆記
  • 數據分析必備——SQL入門基礎知識
    對於想走數據分析職業道路的小夥伴,不僅僅需要了解統計學的基本知識(參考《數據分析必備——統計學入門基礎知識》),Excel的基礎知識(參考《數據分析必備——Excel基礎知識》),也要學習一些資料庫和SQL的內容哦! SQL的全稱是Structured Query Language(結構化查詢語言),是一種古老而簡潔的程序設計語言。
  • sql入門基礎知識(經典)
    1.資料庫介紹* 資料庫(DataBase,DB),資料庫用於存放數據的文件系統* 資料庫軟體系統(DBMS)* 關係:用二維表描述實體與實體之間聯繫* 記錄:元組,二維表中一個一行數據* 欄位:列,屬性,域,二維表中一個一列* 注意事項:* 列名必須唯一* 列沒有順序
  • Mybatis基本知識四:動態SQL介紹
    上一篇文章:《Mybatis基本知識三:單表查詢屬性名與查詢欄位的映射》才疏學淺,若文中有紕漏,請多多指正!!!本節主要介紹動態SQL,其主要用於解決用戶提交的查詢條件不確定的情況。用戶提交的查詢條件不同,執行的SQL也就不同。
  • 網際網路知識充電:php中如何使用SQL語言對資料庫進行操作
    用語言描述估計比較費力,這裡我們直接上代碼,看著代碼就能夠很好地解釋了。$conn->connect_error);}// 檢測連接上述內容都是上一節提到的,之力我們是大體回顧一下,下面的內容是本次新增的$sql = "INSERT INTO MyGuests (firstname, lastname, email)VALUES ('Smith', 'Doe'
  • 介紹數字電路中的三種觸發器類型
    數字時序電路中通常用到的觸發器有三種:電平觸發器、脈衝觸發器和邊沿觸發器。今天給大家介紹一下這三種觸發器,話不多說,直接入正題。1.電平觸發器如上圖所示就是電平觸發器的邏輯結構圖和圖形符號圖,只有CLK為高電平的時候才能接受輸入信號,並按照輸入信號將觸發器輸出置成相應的輸出。它是由一個SR觸發器和兩個與非門組成,又稱為同步SR觸發器。2.
  • SQL語法基礎筆記
    (DDL)數據定義語言(Data Definition Language,DDL)是 SQL 語言集中負責數據結構定義與資料庫對象定義的語言。事務控制語言(TCL)事務控制語言 (Transaction Control Language, TCL) 用於管理資料庫中的事務。這些用於管理由 DML 語句所做的更改。它還允許將語句分組為邏輯事務。TCL 的核心指令是 COMMIT、ROLLBACK。
  • 數據分析面試需要掌握SQL到什麼程度?去哪裡學習?
    首先,對於sql的掌握程度,不同數據分析崗位的要求和標準是不同的行業分析師、商業分析等崗位,更偏向於市場數據的宏觀分析和預測,需要有一定的統計學基礎和經濟學,對sql的要求並不高;我見過很多商業分析師甚至都不會sql,宏觀數據一般也不會放在數據倉庫裡讓你去取,外部數據根本用不著sql。
  • 資深DBA整理MySQL基礎知識四:大神們都忽略的SQL語句執行的順序
    前幾篇說了一些SQL語句的基礎知識,SQL語句也是一種程式語言,語言執行是有順序的。在學習SQL語言的時候一定要知道他執行的順序,這樣才能能好的理解SQL,學好SQL。下面進入正題,先放兩張圖。sql是基於集合的理論的,集合不會預先對他的行排序,它只是成員的邏輯集合,成員的順序是無關緊要的。對表進行排序的查詢可以返回一個對象,這個對象包含特定的物理順序的邏輯組織。這個對象就叫遊標。正因為返回值是遊標,那麼使用order by 子句查詢不能應用於表表達式。