亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

這個(gè)時(shí)候我們可以使用觸發(fā)器,創(chuàng)建一個(gè)觸發(fā)器,讓商品信息數(shù)據(jù)的插入操作自動(dòng)觸發(fā)庫存數(shù)據(jù)的插入操作等,這樣我們就不需要擔(dān)心因?yàn)橥浱砑訋齑鏀?shù)據(jù)而導(dǎo)致數(shù)據(jù)丟失了。

2.觸發(fā)器概述

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

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

3.1語法

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

for each row表明,每執(zhí)行一次事件(insert,update或delete)就會(huì)觸發(fā)一次觸發(fā)器

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

說明:

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

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

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

  • INSERT 表示插入記錄時(shí)觸發(fā);
  • UPDATE 表示更新記錄時(shí)觸發(fā);
  • DELETE 表示刪除記錄時(shí)觸發(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ù)庫中某一個(gè)觸發(fā)器的定義

show create trigger 觸發(fā)器名

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

SELECT * FROM information_schema.TRIGGERS;

5.刪除觸發(fā)器

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

    使用rsync配置了大量mysql,省去了大量編譯和配置的時(shí)間,隨逐個(gè)修改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)常會(huì)時(shí)不時(shí)的出現(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ù),如何只保留最新的一條,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • MySQL查詢優(yōu)化必備知識(shí)點(diǎn)總結(jié)

    MySQL查詢優(yōu)化必備知識(shí)點(diǎn)總結(jié)

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

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

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

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

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

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

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

    解決MySQL報(bào)錯(cuò)Error 3948 (42000): Loading loc

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

最新評(píng)論