最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL觸發(fā)器使用過程詳解

 更新時間:2023年03月01日 11:06:03   作者:瀛臺夜雪  
觸發(fā)器,就是一種特殊的存儲過程。觸發(fā)器和存儲過程一樣是一個能夠完成特定功能、存儲在數(shù)據(jù)庫服務(wù)器上的SQL片段。本文將通過簡單的實(shí)力介紹一下觸發(fā)器的操作,需要的可以參考一下

MySQL—觸發(fā)器

? 將兩個關(guān)聯(lián)的操作步驟寫到程序里面,并且要用事務(wù)包裹起來,確保兩個操作稱為一個原子操作,要么全部執(zhí)行,要么全部不執(zhí)行

? 創(chuàng)建一個觸發(fā)器,讓商品信息數(shù)據(jù)的插入操作自動觸發(fā)庫存數(shù)據(jù)的插入操作

? 觸發(fā)器是由 事件來觸發(fā) 某個操作,這些事件包括 INSERT 、 UPDATE 、 DELETE 事件。所謂事件就是指用戶的動作或者觸發(fā)某項(xiàng)行為。如果定義了觸發(fā)程序,當(dāng)數(shù)據(jù)庫執(zhí)行這些語句時候,就相當(dāng)于事件發(fā)生 了,就會 自動 激發(fā)觸發(fā)器執(zhí)行相應(yīng)的操作。

創(chuàng)建觸發(fā)器

CREATE TRIGGER 觸發(fā)器名稱
{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表明
FOR EACH ROW
觸發(fā)器執(zhí)行語句

說明:

表名 :表示觸發(fā)器監(jiān)控的對象。

BEFORE|AFTER :表示觸發(fā)的時間。BEFORE 表示在事件之前觸發(fā);AFTER 表示在事件之后觸發(fā)。

INSERT|UPDATE|DELETE :表示觸發(fā)的事件。

  • INSERT 表示插入記錄時觸發(fā);
  • UPDATE 表示更新記錄時觸發(fā);
  • DELETE 表示刪除記錄時觸發(fā)。

觸發(fā)器執(zhí)行的語句塊 :可以是單條SQL語句,也可以是由BEGIN…END結(jié)構(gòu)組成的復(fù)合語句塊。

DELIMITER //
CREATE TRIGGER before_insert_test_tri
BEFORE INSERT ON test_trigger
FOR EACH ROW 
BEGIN
INSERT INTO test_trigger_log(t_node)
VALUES('before insert');
END //
DELIMITER ;
INSERT INTO test_trigger(t_node)
VALUES('test..');
SELECT * FROM test_trigger;
SELECT * FROM test_trigger_log;
DELIMITER //
CREATE TRIGGER salary_check_trigger
BEFORE INSERT ON emp
FOR EACH ROW
BEGIN
	DECLARE mgr_sal DOUBLE;
	SELECT salary INTO mgr_sal FROM emp
	WHERE employee_id = NEW.manager_id;
	IF NEW.salary > mgr_sal
		THEN SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '薪資不得高于領(lǐng)導(dǎo)薪資';
	END IF;
END //
DELIMITER ;
DESC emp;
INSERT INTO emp(employee_id,last_name,email,hire_date,job_id,salary,manager_id)
VALUES(300,'test','tom@126.com',CURDATE(),'AD_VP',10000,103);

查看觸發(fā)器

查看當(dāng)前數(shù)據(jù)庫所有觸發(fā)器的定義

mysql> SHOW TRIGGERS\G;
*************************** 1. row ***************************
             Trigger: salary_check_trigger
               Event: INSERT
               Table: emp
           Statement: BEGIN
	DECLARE mgr_sal DOUBLE;
	SELECT salary INTO mgr_sal FROM emp
	WHERE employee_id = NEW.manager_id;
	IF NEW.salary > mgr_sal
		THEN SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '薪資不得高于領(lǐng)導(dǎo)薪資';
	END IF;
END
              Timing: BEFORE
             Created: 2023-02-28 15:46:44.71
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
             Definer: root@%
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci

查看當(dāng)前數(shù)據(jù)庫中某個觸發(fā)器的定義

SHOW CREATE TRIGGER salary_check_trigger\G;

從系統(tǒng)庫information_schema的TRIGGERS表中查詢“salary_check_trigger”觸發(fā)器的信息。

SELECT * FROM information_schema.TRIGGERS\G;

刪除觸發(fā)器

DROP TRIGGER salary_check_trigger

觸發(fā)器優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 可以確保數(shù)據(jù)的完整性
  • 可以幫助記錄操作日志
  • 可以用在操作數(shù)據(jù)前,對數(shù)據(jù)進(jìn)行合法性檢驗(yàn)

缺點(diǎn):

  • 可讀性差
  • ER salary_check_trigger

### 觸發(fā)器優(yōu)缺點(diǎn)

#### 優(yōu)點(diǎn):

- 可以確保數(shù)據(jù)的完整性
- 可以幫助記錄操作日志
- 可以用在操作數(shù)據(jù)前,對數(shù)據(jù)進(jìn)行合法性檢驗(yàn)

#### 缺點(diǎn):

- 可讀性差
- 相關(guān)數(shù)據(jù)的變更,可能會導(dǎo)致觸發(fā)器錯誤

到此這篇關(guān)于MySQL觸發(fā)器使用過程詳解的文章就介紹到這了,更多相關(guān)MySQL觸發(fā)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • CentOS 7.0下使用yum安裝mysql的方法詳解

    CentOS 7.0下使用yum安裝mysql的方法詳解

    這篇文章主要介紹了CentOS 7.0下使用yum安裝mysql的方法詳解的相關(guān)資料,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 淺談Using filesort和Using temporary 為什么這么慢

    淺談Using filesort和Using temporary 為什么這么慢

    本文主要介紹了Using filesort和Using temporary為什么這么慢,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Mysql忘記密碼的幾種解決方案

    Mysql忘記密碼的幾種解決方案

    今天小編就為大家分享一篇關(guān)于Mysql忘記密碼的幾種解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 如何修改MySQL字符集

    如何修改MySQL字符集

    這篇文章主要介紹了如何修改MySQL字符集,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • mysql 鎖表鎖行語句分享(MySQL事務(wù)處理)

    mysql 鎖表鎖行語句分享(MySQL事務(wù)處理)

    下面這個語句是鎖定一行數(shù)據(jù),開始讀取,一直到刪除后都不會有第二個人也讀到這條數(shù)據(jù)
    2011-09-09
  • MySQL數(shù)據(jù)表基本操作實(shí)例詳解

    MySQL數(shù)據(jù)表基本操作實(shí)例詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)表基本操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了MySQL針對數(shù)據(jù)表的基本創(chuàng)建、表結(jié)構(gòu)查看、修改、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • MySQL8.0窗口函數(shù)入門實(shí)踐及總結(jié)

    MySQL8.0窗口函數(shù)入門實(shí)踐及總結(jié)

    這篇文章主要給大家介紹了關(guān)于MySQL8.0窗口函數(shù)入門實(shí)踐及總結(jié)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用MySQL8.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Ubuntu18.0.4下mysql 8.0.20 安裝配置方法圖文教程

    Ubuntu18.0.4下mysql 8.0.20 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Ubuntu18.0.4下mysql 8.0.19 安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • mysql中GROUP_CONCAT函數(shù)使用技巧及問題詳解

    mysql中GROUP_CONCAT函數(shù)使用技巧及問題詳解

    這篇文章主要給大家介紹了關(guān)于mysql中GROUP_CONCAT函數(shù)使用技巧及問題的相關(guān)資料,GROUP_CONCAT是MySQL中的一個聚合函數(shù),它用于將多行數(shù)據(jù)按照指定的順序連接成一個字符串并返回結(jié)果,需要的朋友可以參考下
    2023-11-11
  • MySQL 分表優(yōu)化試驗(yàn)代碼

    MySQL 分表優(yōu)化試驗(yàn)代碼

    我們的項(xiàng)目中有好多不等于的情況。今天寫這篇文章簡單的分析一下怎么個優(yōu)化法。
    2010-04-04

最新評論

盘山县| 长顺县| 布拖县| 缙云县| 尚义县| 江孜县| 乌审旗| 平昌县| 瑞昌市| 确山县| 奈曼旗| 乐业县| 乌拉特前旗| 徐州市| 甘谷县| 嵊泗县| 宁明县| 三都| 漳州市| 延寿县| 翁牛特旗| 祁东县| 兴海县| 木兰县| 松阳县| 宁波市| 澄城县| 叶城县| 宁河县| 石楼县| 霍林郭勒市| 宜兴市| 阿拉善右旗| 福州市| 诸暨市| 丰镇市| 宝坻区| 措美县| 体育| 旬邑县| 汝城县|