国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL筆記之觸發器的應用

2024-07-24 12:48:38
字體:
來源:轉載
供稿:網友

創建觸發器

創建只有一個執行語句的觸發器

復制代碼 代碼如下:

CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件
ON 表名 FOR EACH ROW 執行語句

其中,觸發器名參數指要創建的觸發器的名字

BEFORE和AFTER參數指定了觸發執行的時間,在事件之前或是之后

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

復制代碼 代碼如下:

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

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


創建有多個執行語句的觸發器

復制代碼 代碼如下:

CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件
ON 表名 FOR EACH ROW
BEGIN
    執行語句列表
END

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

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

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

     當觸發器創建完成后,可以用DELIMITER ;來將結束符號變成;

復制代碼 代碼如下:

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 ;


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

就會執行BEGIN和END中的語句,接著使用||結束

最后使用DELIMITER ; 將結束符號還原


查看觸發器
SHOW TRIGGERS語句查看觸發器信息

復制代碼 代碼如下:

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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆丰市| 花莲市| 武胜县| 钟祥市| 米易县| 长治县| 安达市| 临夏市| 新田县| 鸡西市| 潮州市| 屏南县| 宜宾市| 米脂县| 唐海县| 呼玛县| 红桥区| 大港区| 南木林县| 和政县| 桐乡市| 富平县| 乌海市| 贵南县| 灵璧县| 密云县| 古丈县| 大同县| 新密市| 油尖旺区| 大田县| 临澧县| 仲巴县| 邢台县| 视频| 定日县| 武义县| 武威市| 揭西县| 水城县| 金平|