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

溫馨提示×

溫馨提示×

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

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

mysql觸發器如何寫

發布時間:2020-09-24 09:17:21 來源:億速云 閱讀:197 作者:小新 欄目:MySQL數據庫

這篇文章主要介紹了mysql觸發器如何寫,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

觸發器是與 MySQL 數據表有關的數據庫對象,在滿足定義條件時觸發,并執行觸發器中定義的語句集合。觸發器的這種特性可以協助應用在數據庫端確保數據的完整性。

語法格式如下:

CREATE <觸發器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<觸發器主體>

語法說明如下。

1) 觸發器名

觸發器的名稱,觸發器在當前數據庫中必須具有唯一的名稱。如果要在某個特定數據庫中創建,名稱前面應該加上數據庫的名稱。

2) INSERT | UPDATE | DELETE

觸發事件,用于指定激活觸發器的語句的種類。

注意:三種觸發器的執行時間如下。INSERT:將新行插入表時激活觸發器。例如,INSERT 的 BEFORE 觸發器不僅能被 MySQL 的 INSERT 語句激活,也能被 LOAD DATA 語句激活。DELETE: 從表中刪除某一行數據時激活觸發器,例如 DELETE 和 REPLACE 語句。UPDATE:更改表中某一行數據時激活觸發器,例如 UPDATE 語句。

3) BEFORE | AFTER

BEFORE 和 AFTER,觸發器被觸發的時刻,表示觸發器是在激活它的語句之前或之后觸發。若希望驗證新數據是否滿足條件,則使用 BEFORE 選項;若希望在激活觸發器的語句執行之后完成幾個或更多的改變,則通常使用 AFTER 選項。

4) 表名

與觸發器相關聯的表名,此表必須是永久性表,不能將觸發器與臨時表或視圖關聯起來。在該表上觸發事件發生時才會激活觸發器。同一個表不能擁有兩個具有相同觸發時刻和事件的觸發器。例如,對于一張數據表,不能同時有兩個 BEFORE UPDATE 觸發器,但可以有一個 BEFORE UPDATE 觸發器和一個 BEFORE INSERT 觸發器,或一個 BEFORE UPDATE 觸發器和一個 AFTER UPDATE 觸發器。

5) 觸發器主體

觸發器動作主體,包含觸發器激活時將要執行的 MySQL 語句。如果要執行多個語句,可使用 BEGIN…END 復合語句結構。

6) FOR EACH ROW

一般是指行級觸發,對于受觸發事件影響的每一行都要激活觸發器的動作。例如,使用 INSERT 語句向某個表中插入多行數據時,觸發器會對每一行數據的插入都執行相應的觸發器動作。

注意:每個表都支持 INSERT、UPDATE 和 DELETE 的 BEFORE 與 AFTER,因此每個表最多支持 6 個觸發器。每個表的每個事件每次只允許有一個觸發器。單一觸發器不能與多個事件或多個表關聯。

另外,在 MySQL 中,若需要查看數據庫中已有的觸發器,則可以使用 SHOW TRIGGERS 語句。

例子:

BEGIN    
IF new.state  in ('2','3')  then  
  INSERT INTO `userservice`.`ehome_us_green_examine` 
(modifydate,modifyuser,brancCode,stateDescription,state,
userID,fromSystemkey,applydate,makeHospitalName,illnessName,
userName,rightsholderName,tranno) 
VALUES ( sysdate(), 'manage', old.brancCode, old.stateDescription, new.state, 
'', old.fromSystemkey, old.applydate,old.makeHospitalName,old.illnessName,
old.userName,old.rightsholderName, old.tranno);
END IF;  
END

這個觸發器比較簡單,

1、BEGIN到END,之間是對數據庫的操作

2、IF到END IF之間是判斷,你想的對,就是如果。。。的意思

3、new.state  in ('2','3') 這句的意思是:該表的字段state為(2或者3)的時候

4、執行下面的插入語句,new為新值,old是原來的值(如old.userName就是原來的這個字段的值)

5、整個觸發器翻譯成白話就是,如果該表的state變成2或者3的時候,執行下面的插入語句

備注:那么觸發器是發生在狀態變化之前還是之后呢?選Before或者After,顧名思義!

感謝你能夠認真閱讀完這篇文章,希望小編分享mysql觸發器如何寫內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

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

AI

伊宁县| 确山县| 留坝县| 武鸣县| 太和县| 伊吾县| 进贤县| 吉木乃县| 兴化市| 綦江县| 曲松县| 二手房| 克山县| 政和县| 陆丰市| 钦州市| 宜春市| 灵璧县| 辛集市| 高尔夫| 丘北县| 南雄市| 长岛县| 壶关县| 甘泉县| 寻甸| 马龙县| 上蔡县| 新民市| 绥阳县| 杨浦区| 和田县| 莆田市| 蓬溪县| 赤城县| 竹山县| 金昌市| 微山县| 淅川县| 宜宾县| 和政县|