首頁  >  文章  >  資料庫  >  MySQL觸發器如何建立與刪除

MySQL觸發器如何建立與刪除

WBOY
WBOY轉載
2023-05-28 16:34:111021瀏覽

MySQL觸發器如何建立與刪除

1.為什麼需要觸發器

有一些表是互相關聯的,比如說商品表和庫存表,我們對商品表的資料進行操作,那麼對應的庫存表還得發生變化,這樣才可以保證資料的完整。如果我們是自己手動維修的話,比較麻煩。
這時候我們可以使用觸發器,建立一個觸發器,讓商品資訊資料的插入操作自動觸發庫存資料的插入操作等,這樣我們就不需要擔心因為忘記新增庫存資料而導致資料遺失了。

2.觸發器概述

  • MySQL是從5.0.2版本開始支援觸發器的

  • MySQL的觸發器和預存程序一樣都是嵌入到MySQL伺服器的一段程式

  • 觸發器是由某一個事件來觸發某個操作,這些事件包括insert,delete,update事件

  • 若定義了觸發程序,那麼資料庫執行這些語句的時候,就相當於事件發生,會自動激發觸發器執行對應的動作

  • 如果對資料庫中的表的資料進行插入等操作的時候,需要自動執行一些資料庫邏輯的時候,我們可以用觸發器來實現。

3.觸發器的建立

3.1語法

觸發器是作用在表上的,比如說我們希望表A新增一條記錄的時候就觸發觸發器的執行,而且還要選擇觸發器是在insert語句執行之前執行觸發器還是之後。

  • for each row表明,每執行一次事件(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結構組成的複合語句區塊。

3.2 案例示範

先準備表格

CREATE TABLE test_trigger (id INT PRIMARY KEY AUTO_INCREMENT,t_note VARCHAR(30));CREATE TABLE test_trigger_log (id INT PRIMARY KEY AUTO_INCREMENT,t_log VARCHAR(30));

要求:建立觸發器:建立名稱為before_insert的觸發器,向test_trigger資料表插入在資料之前,向test_trigger_log資料表中插入before_insert的日誌資訊。
MySQL觸發器如何建立與刪除
MySQL觸發器如何建立與刪除

4.檢視觸發器

  • #檢視觸發器是檢視資料庫中已經存在的觸發器的定義,狀態和語法資訊等

  • 方式一:查看目前資料庫的所有觸發器的定義

  • ##
    show triggers\G 注意,在SQLyog中,不能加上\G

MySQL觸發器如何建立與刪除

  • 方式二:查看目前資料庫中某一個觸發器的定義

  • show create trigger 触发器名

MySQL觸發器如何建立與刪除

  • 方式三:從系統庫information_schema的TRIGGERS表中查詢「salary_check_trigger」觸發器的資訊

  • SELECT * FROM information_schema.TRIGGERS;
5.刪除觸發器

#觸發器也是資料庫對象,觸發器也是用drop語句來刪除

drop trigger if exists 触发器名;

以上是MySQL觸發器如何建立與刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除