<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog]]></title> 
<link>http://www.bizeway.net/index.php</link> 
<description><![CDATA[网务通 - 网务公司发展之路]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog]]></copyright>
<item>
<link>http://www.bizeway.net/read.php?</link>
<title><![CDATA[MySQL笔记之触发器的应用]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[MySQL]]></category>
<pubDate>Mon, 30 Dec 2013 17:40:28 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?</guid> 
<description>
<![CDATA[ 
	触发器是由事件来触发某个操作，这些事件包括INSERT语句，UPDATE语句和DELETE语句 <br/>创建触发器<br/><br/>创建只有一个执行语句的触发器<br/><br/><br/>复制代码 代码如下:<br/>CREATE TRIGGER 触发器名 BEFORE&#124;AFTER 触发事件<br/>ON 表名 FOR EACH ROW 执行语句<br/><br/>其中，触发器名参数指要创建的触发器的名字<br/><br/>BEFORE和AFTER参数指定了触发执行的时间，在事件之前或是之后<br/><br/>FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器<br/><br/><br/>复制代码 代码如下:<br/>mysql> CREATE TRIGGER trig1 AFTER INSERT<br/> &nbsp; &nbsp;-> ON work FOR EACH ROW<br/> &nbsp; &nbsp;-> INSERT INTO time VALUES(NOW());<br/>Query OK, 0 rows affected (0.09 sec)<br/><br/>上面创建了一个名为trig1的触发器，一旦在work中有插入动作，就会自动往time表里插入当前时间<br/><br/><br/>创建有多个执行语句的触发器<br/><br/><br/>复制代码 代码如下:<br/>CREATE TRIGGER 触发器名 BEFORE&#124;AFTER 触发事件<br/>ON 表名 FOR EACH ROW<br/>BEGIN<br/> &nbsp; &nbsp;执行语句列表<br/>END<br/><br/>其中，BEGIN与END之间的执行语句列表参数表示需要执行的多个语句，不同语句用分号隔开<br/><br/>tips：一般情况下，mysql默认是以 ; 作为结束执行语句，与触发器中需要的分行起冲突<br/><br/>　　 &nbsp; 为解决此问题可用DELIMITER，如：DELIMITER &#124;&#124;，可以将结束符号变成&#124;&#124;<br/><br/>　　 &nbsp; 当触发器创建完成后，可以用DELIMITER ;来将结束符号变成;<br/><br/><br/>复制代码 代码如下:<br/>mysql> DELIMITER &#124;&#124;<br/>mysql> CREATE TRIGGER trig2 BEFORE DELETE<br/> &nbsp; &nbsp;-> ON work FOR EACH ROW<br/> &nbsp; &nbsp;-> BEGIN<br/> &nbsp; &nbsp;-> INSERT INTO time VALUES(NOW());<br/> &nbsp; &nbsp;-> INSERT INTO time VALUES(NOW());<br/> &nbsp; &nbsp;-> END<br/> &nbsp; &nbsp;-> &#124;&#124;<br/>Query OK, 0 rows affected (0.06 sec)<br/><br/>mysql> DELIMITER ;<br/><br/><br/>上面的语句中，开头将结束符号定义为&#124;&#124;，中间定义一个触发器，一旦有满足条件的删除操作<br/><br/>就会执行BEGIN和END中的语句，接着使用&#124;&#124;结束<br/><br/>最后使用DELIMITER ; 将结束符号还原<br/><br/><br/>查看触发器<br/>SHOW TRIGGERS语句查看触发器信息<br/><br/><br/>复制代码 代码如下:<br/>mysql> SHOW TRIGGERS&#92;G;<br/>*************************** 1. row ***************************<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Trigger: trig1<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Event: INSERT<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Table: work<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Statement: INSERT INTO time VALUES(NOW())<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Timing: AFTER<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Created: NULL<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sql_mode: <br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Definer: root@localhost<br/>character_set_client: utf8<br/>collation_connection: utf8_general_ci<br/> &nbsp;Database Collation: latin1_swedish_ci<br/><br/>结果会显示所有触发器的基本信息<br/><br/>tips：SHOW TRIGGERS语句无法查询指定的触发器<br/><br/><br/>在triggers表中查看触发器信息<br/><br/><br/>复制代码 代码如下:<br/>mysql> SELECT * FROM information_schema.triggers&#92;G<br/>*************************** 1. row ***************************<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TRIGGER_CATALOG: def<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TRIGGER_SCHEMA: person<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TRIGGER_NAME: trig1<br/> &nbsp; &nbsp; &nbsp; &nbsp;EVENT_MANIPULATION: INSERT<br/> &nbsp; &nbsp; &nbsp;EVENT_OBJECT_CATALOG: def<br/> &nbsp; &nbsp; &nbsp; EVENT_OBJECT_SCHEMA: person<br/> &nbsp; &nbsp; &nbsp; &nbsp;EVENT_OBJECT_TABLE: work<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ACTION_ORDER: 0<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ACTION_CONDITION: NULL<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ACTION_STATEMENT: INSERT INTO time VALUES(NOW())<br/><br/>结果显示了所有触发器的详细信息，同时，该方法可以查询制定触发器的详细信息<br/>复制代码 代码如下:<br/>mysql> SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='trig1'&#92;G<br/>*************************** 1. row ***************************<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TRIGGER_CATALOG: def<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TRIGGER_SCHEMA: person<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TRIGGER_NAME: trig1<br/> &nbsp; &nbsp; &nbsp; &nbsp;EVENT_MANIPULATION: INSERT<br/> &nbsp; &nbsp; &nbsp;EVENT_OBJECT_CATALOG: def<br/> &nbsp; &nbsp; &nbsp; EVENT_OBJECT_SCHEMA: person<br/> &nbsp; &nbsp; &nbsp; &nbsp;EVENT_OBJECT_TABLE: work<br/><br/>tips：所有触发器信息都存储在information_schema数据库下的triggers表中<br/><br/>　　 &nbsp; 可以使用SELECT语句查询，如果触发器信息过多，最好通过TRIGGER_NAME字段指定查询<br/><br/><br/>删除触发器<br/><br/><br/>复制代码 代码如下:<br/>mysql> DROP TRIGGER trig1;<br/>Query OK, 0 rows affected (0.04 sec)<br/><br/>删除触发器之后最好使用上面的方法查看一遍<br/><br/>同时，也可以使用database.trig来指定某个数据库中的触发器<br/><br/>tips：如果不需要某个触发器时一定要将这个触发器删除，以免造成意外操作<br/><br/>Tags - <a href="tag.php?tag=mysql" rel="tag">mysql</a> , <a href="tag.php?tag=%E8%A7%A6%E5%8F%91%E5%99%A8" rel="tag">触发器</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] MySQL笔记之触发器的应用]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>