每日一贴,今天的内容关键字为触发器语句
触发器是由事件来触发某个操纵,这些事件括包INSERT语句,UPDATE语句和DELETE语句
创立触发器
创立只有一个执行语句的触发器
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)
创立有多个执行语句的触发器
CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW 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
可以用使SELECT语句询查,如果触发器信息多过,最好通过TRIGGER_NAME段字指定询查
删除触发器
mysql> DROP TRIGGER trig1; Query OK, 0 rows affected (0.04 sec)
同时,也可以用使database.trig来指定某个数据库中的触发器
tips:如果不须要某个触发器时必定要将这个触发器删除,以免形成外意操纵
文章结束给大家分享下程序员的一些笑话语录: 系统程序员
1、头皮经常发麻,在看见一个蓝色屏幕的时候比较明显,在屏幕上什幺都看不见的时候尤其明显;
2、乘电梯的时候总担心死机,并且在墙上找reset键;
3、指甲特别长,因为按F7到F12比较省力;
4、只要手里有东西,就不停地按,以为是Alt-F、S;
5、机箱从来不上盖子,以便判断硬盘是否在转;
6、经常莫名其妙地跟踪别人,手里不停按F10;
7、所有的接口都插上了硬盘,因此觉得26个字母不够;
8、一有空就念叨“下辈子不做程序员了”;
9、总是觉得9号以后是a号;
10、不怕病毒,但是很害怕自己的程序;