mysql 觸發器用法實例分享
本文主要介紹了mysql 觸發器用法實例詳解的相關資料,需要的朋友可以參考下,希望能幫助到大家。
MySQL觸發器語法詳解:
觸發器trigger是一種特殊的儲存過程,他在插入(inset)、刪除(delete)或修改(update)特定表中的資料時觸發執行,它比資料本身標準的功能更精細和更複雜的資料控制能力。觸發器不是由程式調用,而是由某個事件來觸發的。在有資料修改時自動強制執行其業務規則,經常用於加強資料的完整性約束和業務規則等。觸發器可以查詢其他表,而且包含複製的sql語句。觸發器也可用於強制引用完整性。觸發器可以強制比用check約束定義的約束更為複雜的約束。
(F).CREATE TRIGGER語法
CREATE TRIGGER trigger_nametrigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmtmger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt;當表上出現特定事件時,將啟動該物件。
觸發程序與命名為tbl_name的表格有關。 tbl_name必須引用永久性表。不能將觸發程式與TEMPORARY表或檢視關聯起來。
trigger_time是觸發程序的動作時間。它可以是BEFORE或AFTER,以指明觸發程序是在啟動它的語句之前或之後觸發。
trigger_event指明了啟動觸發程序的語句的類型。 trigger_event可以是下述值之一:
語句。
(2).UPDATE:變更某一行時啟動觸發程序,例如,透過UPDATE語句。
(3).DELETE:從表中刪除某一行時啟動觸發程序,例如,透過DELETE和REPLACE語句。
##(二).DROP TRIGGER語法
DROP TRIGGER[schema_name.]trigger_name捨棄觸發程式。方案名稱(schema_name)是可選的。如果省略了schema(方案),將從目前方案中捨棄觸發程式。
註:從MySQL 5.0.10之前的MySQL版本升級到5.0.10或更高版本時(包括所有的MySQL5.1版本),必須在升級之前捨棄所有的觸發程序,並在隨後重新創建它們,否則,在升級之後DROP TRIGGER不工作。 DROP TRIGGER語句需要SUPER權限。
(三).使用觸發程序
在本節中,介紹了在MySQL 5.1中使用觸發程序的方法,並介紹了在使用觸發程序方面的限制。
觸發程式是與表格相關的命名資料庫對象,當表格上出現特定事件時,將啟動該物件。在某些觸發程序的用法中,可用於檢查插入到表中的值,或對更新涉及的值進行計算。
觸發程式與資料表相關,當對錶執行INSERT、DELETE或UPDATE語句時,將啟動觸發程式。觸發程序可以設定為在執行語句之前或之後啟動。例如,可以在從表中刪除每一行之前,或在更新了,每一行後啟動觸發程式。若要建立觸發程序或捨棄觸發程序,可使用CREATE TRIGGER或DROP TRIGGER語句.觸發程序不能呼叫將資料傳回客戶端的儲存程序,也不能使用採用CALL語句的動態SQL(允許儲存程式透過參數將資料傳回觸發程式).
觸發程序不能使用以明確或隱式方式開始或結束事務的語句,如START TRANSACTION、
COMMIT或ROLLBACK。
使用OLD和NEW關鍵字,能夠存取受觸發程式影響的行中的欄位(OLD和NEW不區分大小寫)。
在INSERT觸發程式中,只能使用NEW.col_name,沒有舊行。在DELETE觸發程式中,只能使用OLD.col_name,沒有新行。在UPDATE觸發程式中,可以使用OLD.col_name來引用更新前的某一行的列,也能使用NEW.col_name來引用更新後的行中的列。
用OLD命名的欄位是唯讀的。你可以引用它,但不能更改它。對於用NEW命名的列,如果具有SELECT權限,可引用它。在BEFORE觸發程式中,如果你有UPDATE權限,可使用「SET NEW.col_name = value」來變更它的值。這意味著,你可以使用觸發程序來更改將要插入新行中的值,或用於更新行的值。在BEFORE觸發程序中,AUTO_INCREMENT列的NEW值為0,不是實際插入新記錄時會自動產生的序號。
透過使用BEGIN ...END結構,能夠定義執行多條語句的觸發程序。在BEGIN區塊中,還能使用儲存子程式中允許的其他語法,如條件和循環等。但是,正如儲存子程序那樣,定義執行多條語句的觸發程序時,如果使用mysql程序來輸入觸發程序,需要重新定義語句分隔符,以便能夠在觸發程序定義中使用字元“;”。在下面的範例中,示範了這些要點。在這個範例中,定義了1個UPDATE觸發程序,用於檢查更新每一行時將使用的新值,並更改值,使之位於0~100的範圍內。它必須是BEFORE觸發程序,這是因為,需要在將值用於更新行之前對其進行檢查:
mysql> delimiter // mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account -> FOR EACH ROW -> BEGIN -> IF NEW.amount < 0 THEN -> SET NEW.amount = 0; -> ELSEIF NEW.amount > 100 THEN -> SET NEW.amount = 100; -> END IF; -> END;// mysql> delimiter ;
較為簡單的方法是,單獨定義存儲程序,然後使用簡單的CALL語句從觸發程序呼叫儲存程式。如果你打算從數個觸發程序內部呼叫相同的子程序,該方法也很有幫助。在觸發程序的執行過程中,MySQL處理錯誤的方式如下:
(1)如果BEFORE觸發程序失敗,則不執行對應行上的動作。
(2)只有當BEFORE觸發程序(如果有的話)和行操作都已成功執行,才執行AFTER觸發程序。
(3) 若在BEFORE或AFTER觸發程式的執行過程中出現錯誤,將導致整個呼叫觸發程式的語句的失敗。
(4)對於事務性表,如果觸發程序失敗(以及由此導致的整個語句的失敗),則該語句所執行的所有變更將回滾。對於非事務性表,不能執行這類回滾,因而,即使語句失敗,失敗之前所做的任何變更依然有效。
例一:
mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2)); mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum = @sum + NEW.amount;
相關推薦:
以上是mysql 觸發器用法實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

Navicat本身不存儲數據庫密碼,只能找回加密後的密碼。解決辦法:1. 檢查密碼管理器;2. 檢查Navicat的“記住密碼”功能;3. 重置數據庫密碼;4. 聯繫數據庫管理員。

使用 Navicat Premium 創建數據庫:連接到數據庫服務器並輸入連接參數。右鍵單擊服務器並選擇“創建數據庫”。輸入新數據庫的名稱和指定字符集和排序規則。連接到新數據庫並在“對象瀏覽器”中創建表。右鍵單擊表並選擇“插入數據”來插入數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

可在 Navicat 中通過以下步驟新建 MySQL 連接:打開應用程序並選擇“新建連接”(Ctrl N)。選擇“MySQL”作為連接類型。輸入主機名/IP 地址、端口、用戶名和密碼。 (可選)配置高級選項。保存連接並輸入連接名稱。

Navicat for MariaDB 無法直接查看數據庫密碼,因為密碼以加密形式存儲。為確保數據庫安全,有三個方法可重置密碼:通過 Navicat 重置密碼,設置複雜密碼。查看配置文件(不推薦,風險高)。使用系統命令行工具(不推薦,需要對命令行工具精通)。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。
