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

首頁 > 數據庫 > MySQL > 正文

MySQL筆記之觸發器的應用

2024-07-24 12:40:42
字體:
來源:轉載
供稿:網友
創建觸發器   創建只有一個執行語句的觸發器   復制代碼 代碼如下:     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     結果會顯示所有觸發器的基本信息 tips:SHOW TRIGGERS語句無法查詢指定的觸發器     在triggers表中查看觸發器信息   復制代碼 代碼如下:     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())     結果顯示了所有觸發器的詳細信息,同時,該方法可以查詢制定觸發器的詳細信息 復制代碼 代碼如下:     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:所有觸發器信息都存儲在information_schema數據庫下的triggers表中    可以使用SELECT語句查詢,如果觸發器信息過多,最好通過TRIGGER_NAME字段指定查詢     刪除觸發器   復制代碼 代碼如下:     mysql> DROP TRIGGER trig1; Query OK, 0 rows affected (0.04 sec)     刪除觸發器之后最好使用上面的方法查看一遍 同時,也可以使用database.trig來指定某個數據庫中的觸發器   tips:如果不需要某個觸發器時一定要將這個觸發器刪除,以免造成意外操作  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰镇市| 宁波市| 增城市| 光泽县| 灵宝市| 怀柔区| 澄江县| 东乡| 醴陵市| 金沙县| 琼结县| 平阴县| 晋江市| 洪洞县| 宜都市| 措美县| 都安| 梓潼县| 新闻| 塘沽区| 化德县| 根河市| 东宁县| 乌拉特前旗| 永城市| 南乐县| 怀远县| 始兴县| 明水县| 商洛市| 岱山县| 伊宁县| 京山县| 玛纳斯县| 昌乐县| 巨野县| 日喀则市| 织金县| 万年县| 富蕴县| 东阿县|