欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年06月17日 08:54:57   作者:不斷前進的皮卡丘  
觸發(fā)器trigger是一種特殊的存儲過程,他在插入(inset)、刪除(delete)或修改(update)特定表中的數(shù)據(jù)時觸發(fā)執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于MySQL觸發(fā)器使用的相關(guān)資料,需要的朋友可以參考下

1.為什么需要觸發(fā)器

有一些表是互相關(guān)聯(lián)的,比如說商品表和庫存表,我們對商品表的數(shù)據(jù)進行操作,那么對應(yīng)的庫存表還得發(fā)生變化,這樣才可以保證數(shù)據(jù)的完整。如果我們是自己手動維護的話,比較麻煩。

這個時候我們可以使用觸發(fā)器,創(chuàng)建一個觸發(fā)器,讓商品信息數(shù)據(jù)的插入操作自動觸發(fā)庫存數(shù)據(jù)的插入操作等,這樣我們就不需要擔(dān)心因為忘記添加庫存數(shù)據(jù)而導(dǎo)致數(shù)據(jù)丟失了。

2.觸發(fā)器概述

  • MySQL是從5.0.2版本開始支持觸發(fā)器的
  • MySQL的觸發(fā)器和存儲過程一樣都是嵌入到MySQL服務(wù)器的一段程序
  • 觸發(fā)器是由某一個事件來觸發(fā)某個操作,這些事件包括insert,delete,update事件
  • 若定義了觸發(fā)程序,那么數(shù)據(jù)庫執(zhí)行這些語句的時候,就相當(dāng)于事件發(fā)生,會自動激發(fā)觸發(fā)器執(zhí)行相應(yīng)的操作
  • 如果對數(shù)據(jù)庫中的表的數(shù)據(jù)進行插入等操作的時候,需要自動執(zhí)行一些數(shù)據(jù)庫邏輯的時候,我們可以用觸發(fā)器來實現(xiàn)。

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

3.1語法

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

for each row表明,每執(zhí)行一次事件(insert,update或delete)就會觸發(fā)一次觸發(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ù)合語句塊。

3.2 案例演示

先準(zhǔn)備表

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)
);

要求:創(chuàng)建觸發(fā)器:創(chuàng)建名稱為before_insert的觸發(fā)器,向test_trigger數(shù)據(jù)表插入數(shù)據(jù)之前,向test_trigger_log數(shù)據(jù)表中插入before_insert的日志信息。

4.查看觸發(fā)器

查看觸發(fā)器是查看數(shù)據(jù)庫中已經(jīng)存在的觸發(fā)器的定義,狀態(tài)和語法信息等

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

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

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

show create trigger 觸發(fā)器名

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

SELECT * FROM information_schema.TRIGGERS;

5.刪除觸發(fā)器

觸發(fā)器也是數(shù)據(jù)庫對象,觸發(fā)器也是用drop語句來刪除

drop trigger if exists 觸發(fā)器名;

總結(jié)

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

相關(guān)文章

  • MySQL系列之十三 MySQL的復(fù)制

    MySQL系列之十三 MySQL的復(fù)制

    這篇文章主要介紹了MySQL系列之十三 MySQL的復(fù)制,詳細的講述了多種復(fù)制架構(gòu)的案例和MySQL復(fù)制相關(guān)概念等,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • master and slave have equal MySQL server UUIDs 解決方法

    master and slave have equal MySQL server UUIDs 解決方法

    使用rsync配置了大量mysql,省去了大量編譯和配置的時間,隨逐個修改master和slave服務(wù)器的my.cnf,后,發(fā)現(xiàn)數(shù)據(jù)不能同步
    2013-07-07
  • mysql數(shù)據(jù)庫連接失敗常見問題小結(jié)

    mysql數(shù)據(jù)庫連接失敗常見問題小結(jié)

    你有沒有碰到過mysql數(shù)據(jù)庫連接不上的問題呢?很多的小伙伴表示,經(jīng)常會時不時的出現(xiàn)這些問題,下面這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫連接失敗常見問題的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • mysql Event Scheduler: Failed to open table mysql.event

    mysql Event Scheduler: Failed to open table mysql.event

    這篇文章主要介紹了mysql Event Scheduler: Failed to open table mysql.event,需要的朋友可以參考下
    2016-04-04
  • MySQL大量臟數(shù)據(jù)如何只保留最新的一條(最新推薦)

    MySQL大量臟數(shù)據(jù)如何只保留最新的一條(最新推薦)

    這篇文章主要介紹了MySQL大量臟數(shù)據(jù),如何只保留最新的一條,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • MySQL查詢優(yōu)化必備知識點總結(jié)

    MySQL查詢優(yōu)化必備知識點總結(jié)

    這篇文章主要給大家介紹了關(guān)于MySQL查詢優(yōu)化必備知識點的相關(guān)資料,文中介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL觸發(fā)器基本用法詳解【創(chuàng)建、查看、刪除等】

    MySQL觸發(fā)器基本用法詳解【創(chuàng)建、查看、刪除等】

    這篇文章主要介紹了MySQL觸發(fā)器基本用法,結(jié)合實例形式分析了mysql觸發(fā)器的基本創(chuàng)建、查看、刪除等相關(guān)使用方法與注意事項,需要的朋友可以參考下
    2020-05-05
  • 淺談mysql的子查詢聯(lián)合與in的效率

    淺談mysql的子查詢聯(lián)合與in的效率

    本文是作者在實際產(chǎn)品測試中遇到的問題,繼而作了相關(guān)總結(jié),具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • MySQL的雙寫緩沖區(qū)Doublewrite Buffer詳解

    MySQL的雙寫緩沖區(qū)Doublewrite Buffer詳解

    這篇文章主要介紹了MySQL的雙寫緩沖區(qū)Doublewrite Buffer詳解,InnoDB是MySQL中一種常用的事務(wù)性存儲引擎,它具有很多優(yōu)秀的特性,其中,Doublewrite Buffer是InnoDB的一個重要特性之一,本文將介紹Doublewrite Buffer的原理和應(yīng)用,需要的朋友可以參考下
    2023-07-07
  • 解決MySQL報錯Error 3948 (42000): Loading local data is disabled問題

    解決MySQL報錯Error 3948 (42000): Loading loc

    在執(zhí)行MySQL項目過程中意外出現(xiàn)的報錯,之前也沒有遇到過,報錯信息如下,Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client an,本文小編就給大家介紹一下解決報錯的方法,需要的朋友可以參考下
    2023-09-09

最新評論