91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

MySQL觸發器如何使用

發布時間:2023-03-01 14:48:20 來源:億速云 閱讀:216 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“MySQL觸發器如何使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MySQL觸發器如何使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

MySQL—觸發器

將兩個關聯的操作步驟寫到程序里面,并且要用事務包裹起來,確保兩個操作稱為一個原子操作,要么全部執行,要么全部不執行

創建一個觸發器,讓商品信息數據的插入操作自動觸發庫存數據的插入操作

觸發器是由 事件來觸發 某個操作,這些事件包括 INSERT 、 UPDATE 、 DELETE 事件。所謂事件就是指用戶的動作或者觸發某項行為。如果定義了觸發程序,當數據庫執行這些語句時候,就相當于事件發生 了,就會 自動 激發觸發器執行相應的操作。

創建觸發器

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

說明:

表名 :表示觸發器監控的對象。

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

INSERT|UPDATE|DELETE :表示觸發的事件。

  • INSERT 表示插入記錄時觸發;

  • UPDATE 表示更新記錄時觸發;

  • DELETE 表示刪除記錄時觸發。

觸發器執行的語句塊 :可以是單條SQL語句,也可以是由BEGIN…END結構組成的復合語句塊。

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 = '薪資不得高于領導薪資';
	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);

查看觸發器

查看當前數據庫所有觸發器的定義

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 = '薪資不得高于領導薪資';
	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

查看當前數據庫中某個觸發器的定義

SHOW CREATE TRIGGER salary_check_trigger\G;

從系統庫information_schema的TRIGGERS表中查詢“salary_check_trigger”觸發器的信息。

SELECT * FROM information_schema.TRIGGERS\G;

刪除觸發器

DROP TRIGGER salary_check_trigger

觸發器優缺點

優點:

  • 可以確保數據的完整性

  • 可以幫助記錄操作日志

  • 可以用在操作數據前,對數據進行合法性檢驗

缺點:

  • 可讀性差

  • ER salary_check_trigger

### 觸發器優缺點

#### 優點:

- 可以確保數據的完整性
- 可以幫助記錄操作日志
- 可以用在操作數據前,對數據進行合法性檢驗

#### 缺點:

- 可讀性差
- 相關數據的變更,可能會導致觸發器錯誤

讀到這里,這篇“MySQL觸發器如何使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

喀喇沁旗| 临桂县| 防城港市| 双城市| 中江县| 泰来县| 孟州市| 鄂州市| 柳江县| 瑞昌市| 安化县| 乐山市| 临朐县| 栾川县| 崇义县| 四平市| 渭南市| 梅州市| 兰西县| 秦安县| 凤台县| 临夏市| 德兴市| 措勤县| 车险| 淮滨县| 浪卡子县| 乌海市| 黄梅县| 广安市| 和静县| 翁牛特旗| 商城县| 普定县| 南郑县| 四平市| 西乌珠穆沁旗| 抚松县| 邹城市| 古蔺县| 平南县|