最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

FOR EACH ROW表示任何一條記錄上的操作滿(mǎn)足觸發(fā)事件都會(huì)觸發(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)建了一個(gè)名為trig1的觸發(fā)器,一旦在work中有插入動(dòng)作,就會(huì)自動(dòng)往time表里插入當(dāng)前時(shí)間


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

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

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

其中,BEGIN與END之間的執(zhí)行語(yǔ)句列表參數(shù)表示需要執(zhí)行的多個(gè)語(yǔ)句,不同語(yǔ)句用分號(hào)隔開(kāi)

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

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

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

復(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 ;


上面的語(yǔ)句中,開(kāi)頭將結(jié)束符號(hào)定義為||,中間定義一個(gè)觸發(fā)器,一旦有滿(mǎn)足條件的刪除操作

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

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


查看觸發(fā)器
SHOW TRIGGERS語(yǔ)句查看觸發(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é)果會(huì)顯示所有觸發(fā)器的基本信息

tips:SHOW TRIGGERS語(yǔ)句無(wú)法查詢(xún)指定的觸發(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ā)器的詳細(xì)信息,同時(shí),該方法可以查詢(xún)制定觸發(fā)器的詳細(xì)信息
復(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ā)器信息都存儲(chǔ)在information_schema數(shù)據(jù)庫(kù)下的triggers表中

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


刪除觸發(fā)器

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

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

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

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

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

相關(guān)文章

  • mysql導(dǎo)入sql文件命令和mysql遠(yuǎn)程登陸使用詳解

    mysql導(dǎo)入sql文件命令和mysql遠(yuǎn)程登陸使用詳解

    這篇文章主要介紹了mysql導(dǎo)入sql文件命令和mysql遠(yuǎn)程登陸使用詳解,需要的朋友可以參考下
    2014-04-04
  • MySQL中的FIND_IN_SET函數(shù)的使用場(chǎng)景

    MySQL中的FIND_IN_SET函數(shù)的使用場(chǎng)景

    MySQL 中的?FIND_IN_SET()?函數(shù)用于在一個(gè)逗號(hào)分隔的字符串列表中查找指定的值,并返回其在列表中的位置,下面就來(lái)介紹一下FIND_IN_SET函數(shù)的具體使用,感興趣的可以了解一下
    2024-05-05
  • MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

    MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

    這篇文章主要介紹了MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法,針對(duì)右表符合條件表達(dá)式的記錄數(shù)大于1條時(shí)left join所顯示的結(jié)果需求來(lái)講,需要的朋友可以參考下
    2016-03-03
  • MySQL數(shù)據(jù)庫(kù)算術(shù)運(yùn)算舉例詳解

    MySQL數(shù)據(jù)庫(kù)算術(shù)運(yùn)算舉例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)算術(shù)運(yùn)算的相關(guān)資料,MySQL支持的算術(shù)運(yùn)算符包括加、減、乘、除和模運(yùn)算,它們是最常使用、最簡(jiǎn)單的一類(lèi)運(yùn)算符,需要的朋友可以參考下
    2024-01-01
  • MySQL中查詢(xún)字段為空或者為null的方法

    MySQL中查詢(xún)字段為空或者為null的方法

    這篇文章主要介紹了MySQL中查詢(xún)字段為空或者為null的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Mysql大小寫(xiě)敏感的問(wèn)題

    Mysql大小寫(xiě)敏感的問(wèn)題

    這篇文章主要介紹了Mysql大小寫(xiě)敏感的問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • MySQL觸發(fā)器的使用詳解

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

    觸發(fā)器trigger是一種特殊的存儲(chǔ)過(guò)程,他在插入(inset)、刪除(delete)或修改(update)特定表中的數(shù)據(jù)時(shí)觸發(fā)執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于MySQL觸發(fā)器使用的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • MySQL慢查詢(xún)?nèi)罩局械腖ock_time由來(lái)解析

    MySQL慢查詢(xún)?nèi)罩局械腖ock_time由來(lái)解析

    這篇文章主要為大家介紹了慢查詢(xún)?nèi)罩局蠰ock_time的由來(lái)解析,以及Lock_time?包含哪些鎖等待時(shí)間、以及是怎么計(jì)算得到的,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-06-06
  • MySQL中使用group by 是總是出現(xiàn)1055的錯(cuò)誤(推薦)

    MySQL中使用group by 是總是出現(xiàn)1055的錯(cuò)誤(推薦)

    這篇文章主要介紹了MySQL中使用group by 是總是出現(xiàn)1055的錯(cuò)誤,小編通過(guò)查閱相關(guān)資料才把問(wèn)題解決,今天小編記錄下分享到腳本之家平臺(tái),需要的朋友可以參考下
    2020-02-02
  • mysql增量語(yǔ)句如何修改表的字段

    mysql增量語(yǔ)句如何修改表的字段

    本文介紹了如何在MySQL中實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增量更新,確保多次執(zhí)行增量語(yǔ)句不會(huì)影響最終結(jié)果,通過(guò)使用存儲(chǔ)過(guò)程,解決了MySQL無(wú)法直接執(zhí)行塊語(yǔ)句的問(wèn)題,文章詳細(xì)描述了增量添加、修改和刪除某個(gè)字段的操作,并總結(jié)了增量語(yǔ)句的編寫(xiě)方法,類(lèi)似于編寫(xiě)冪等接口
    2024-12-12

最新評(píng)論

缙云县| 永定县| 德化县| 山阳县| 江达县| 榆树市| 卢湾区| 金坛市| 天峨县| 兴国县| 开平市| 新巴尔虎右旗| 阳朔县| 谷城县| 奉化市| 常德市| 靖州| 三明市| 保亭| 太谷县| 永春县| 资溪县| 呼图壁县| 阿拉善盟| 惠州市| 五华县| 柳州市| 行唐县| 凤城市| 启东市| 阳曲县| 衢州市| 濮阳市| 彭泽县| 漳浦县| 新密市| 肇东市| 宁蒗| 田阳县| 莱芜市| 佳木斯市|