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

MySQL筆記之觸發(fā)器的應(yīng)用

 更新時間:2013年05月03日 15:46:24   作者:  
觸發(fā)器是由事件來觸發(fā)某個操作,這些事件包括INSERT語句,UPDATE語句和DELETE語句

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

創(chuàng)建只有一個執(zhí)行語句的觸發(fā)器

復(fù)制代碼 代碼如下:

CREATE TRIGGER 觸發(fā)器名 BEFORE|AFTER 觸發(fā)事件
ON 表名 FOR EACH ROW 執(zhí)行語句

其中,觸發(fā)器名參數(shù)指要創(chuàng)建的觸發(fā)器的名字

BEFORE和AFTER參數(shù)指定了觸發(fā)執(zhí)行的時間,在事件之前或是之后

FOR EACH ROW表示任何一條記錄上的操作滿足觸發(fā)事件都會觸發(fā)該觸發(fā)器

復(fù)制代碼 代碼如下:

mysql> CREATE TRIGGER trig1 AFTER INSERT
    -> ON work FOR EACH ROW
    -> INSERT INTO time VALUES(NOW());
Query OK, 0 rows affected (0.09 sec)

上面創(chuàng)建了一個名為trig1的觸發(fā)器,一旦在work中有插入動作,就會自動往time表里插入當前時間


創(chuàng)建有多個執(zhí)行語句的觸發(fā)器

復(fù)制代碼 代碼如下:

CREATE TRIGGER 觸發(fā)器名 BEFORE|AFTER 觸發(fā)事件
ON 表名 FOR EACH ROW
BEGIN
    執(zhí)行語句列表
END

其中,BEGIN與END之間的執(zhí)行語句列表參數(shù)表示需要執(zhí)行的多個語句,不同語句用分號隔開

tips:一般情況下,mysql默認是以 ; 作為結(jié)束執(zhí)行語句,與觸發(fā)器中需要的分行起沖突

     為解決此問題可用DELIMITER,如:DELIMITER ||,可以將結(jié)束符號變成||

     當觸發(fā)器創(chuàng)建完成后,可以用DELIMITER ;來將結(jié)束符號變成;

復(fù)制代碼 代碼如下:

mysql> DELIMITER ||
mysql> CREATE TRIGGER trig2 BEFORE DELETE
    -> ON work FOR EACH ROW
    -> BEGIN
    -> INSERT INTO time VALUES(NOW());
    -> INSERT INTO time VALUES(NOW());
    -> END
    -> ||
Query OK, 0 rows affected (0.06 sec)

mysql> DELIMITER ;


上面的語句中,開頭將結(jié)束符號定義為||,中間定義一個觸發(fā)器,一旦有滿足條件的刪除操作

就會執(zhí)行BEGIN和END中的語句,接著使用||結(jié)束

最后使用DELIMITER ; 將結(jié)束符號還原


查看觸發(fā)器
SHOW TRIGGERS語句查看觸發(fā)器信息

復(fù)制代碼 代碼如下:

mysql> SHOW TRIGGERS\G;
*************************** 1. row ***************************
             Trigger: trig1
               Event: INSERT
               Table: work
           Statement: INSERT INTO time VALUES(NOW())
              Timing: AFTER
             Created: NULL
            sql_mode:
             Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci

結(jié)果會顯示所有觸發(fā)器的基本信息

tips:SHOW TRIGGERS語句無法查詢指定的觸發(fā)器


在triggers表中查看觸發(fā)器信息

復(fù)制代碼 代碼如下:

mysql> SELECT * FROM information_schema.triggers\G
*************************** 1. row ***************************
           TRIGGER_CATALOG: def
            TRIGGER_SCHEMA: person
              TRIGGER_NAME: trig1
        EVENT_MANIPULATION: INSERT
      EVENT_OBJECT_CATALOG: def
       EVENT_OBJECT_SCHEMA: person
        EVENT_OBJECT_TABLE: work
              ACTION_ORDER: 0
          ACTION_CONDITION: NULL
          ACTION_STATEMENT: INSERT INTO time VALUES(NOW())

結(jié)果顯示了所有觸發(fā)器的詳細信息,同時,該方法可以查詢制定觸發(fā)器的詳細信息
復(fù)制代碼 代碼如下:

mysql> SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='trig1'\G
*************************** 1. row ***************************
           TRIGGER_CATALOG: def
            TRIGGER_SCHEMA: person
              TRIGGER_NAME: trig1
        EVENT_MANIPULATION: INSERT
      EVENT_OBJECT_CATALOG: def
       EVENT_OBJECT_SCHEMA: person
        EVENT_OBJECT_TABLE: work

tips:所有觸發(fā)器信息都存儲在information_schema數(shù)據(jù)庫下的triggers表中

     可以使用SELECT語句查詢,如果觸發(fā)器信息過多,最好通過TRIGGER_NAME字段指定查詢


刪除觸發(fā)器

復(fù)制代碼 代碼如下:

mysql> DROP TRIGGER trig1;
Query OK, 0 rows affected (0.04 sec)

刪除觸發(fā)器之后最好使用上面的方法查看一遍

同時,也可以使用database.trig來指定某個數(shù)據(jù)庫中的觸發(fā)器

tips:如果不需要某個觸發(fā)器時一定要將這個觸發(fā)器刪除,以免造成意外操作

相關(guān)文章

  • mysql遇到load data導(dǎo)入文件數(shù)據(jù)出現(xiàn)1290錯誤的解決方案

    mysql遇到load data導(dǎo)入文件數(shù)據(jù)出現(xiàn)1290錯誤的解決方案

    這篇文章主要介紹了mysql遇到load data導(dǎo)入文件數(shù)據(jù)出現(xiàn)1290錯誤的解決方案,非常的簡單實用,有需要的小伙伴可以參考下
    2018-07-07
  • 提高MySQL深分頁查詢效率的三種方案

    提高MySQL深分頁查詢效率的三種方案

    這篇文章介紹了提高MySQL深分頁查詢效率的三種方案,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 解決MySql客戶端秒退問題(找不到my.ini)

    解決MySql客戶端秒退問題(找不到my.ini)

    這篇文章主要介紹了解決MySql客戶端秒退問題(找不到my.ini),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Mysql實現(xiàn)遞歸樹查詢的使用示例

    Mysql實現(xiàn)遞歸樹查詢的使用示例

    Mysql我們可以使用遞歸查詢來構(gòu)建一個遞歸樹,本文就來介紹一下Mysql實現(xiàn)遞歸樹查詢的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • MySQL數(shù)據(jù)庫連接查詢?join原理

    MySQL數(shù)據(jù)庫連接查詢?join原理

    這篇文章主要介紹了MySQL數(shù)據(jù)庫連接查詢?join原理,文章首先通過將多張表連到一起查詢?導(dǎo)致記錄行數(shù)和字段列發(fā)生變化,利用一對一、一對多和多對多關(guān)系保證數(shù)據(jù)完整性展開主題內(nèi)容,需要的小伙伴可以參考一下
    2022-06-06
  • MySQL Cluster集群的初級部署教程

    MySQL Cluster集群的初級部署教程

    這篇文章主要介紹了MySQL Cluster集群的初級部署教程, MySql Cluster可以利用充分利用節(jié)點服務(wù)器的多進程做到高可用,需要的朋友可以參考下
    2016-02-02
  • MySQL生成千萬測試數(shù)據(jù)以及遇到的問題

    MySQL生成千萬測試數(shù)據(jù)以及遇到的問題

    前兩天發(fā)現(xiàn)同事要做一個對大表進行范圍查詢的功能,所以需要生成千萬數(shù)據(jù)進行性能測試,下面這篇文章主要給大家介紹了關(guān)于MySQL生成千萬測試數(shù)據(jù)以及遇到的問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • MySQL下常見的啟動失敗與備份失敗問題的解決教程

    MySQL下常見的啟動失敗與備份失敗問題的解決教程

    這篇文章主要介紹了MySQL下常見的啟動失敗與備份失敗問題的解決教程,示例環(huán)境基于Linux系統(tǒng),需要的朋友可以參考下
    2015-11-11
  • centos 7安裝mysql5.5的方法

    centos 7安裝mysql5.5的方法

    這篇文章主要介紹了centos 7安裝mysql5.5的方法,需要的朋友可以參考下
    2015-09-09
  • 三種常用的MySQL 數(shù)據(jù)類型

    三種常用的MySQL 數(shù)據(jù)類型

    這篇文章主要介紹了MySQL 的數(shù)據(jù)類型的的相關(guān)資料,文中講解非常細致,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-06-06

最新評論