免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1395 | 回复: 0
打印 上一主题 下一主题

MySQL5触发器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-22 11:04 |只看该作者 |倒序浏览
CREATE TRIGGER
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON
FOR EACH ROW

1.命名规则: 触发器必须有名字,最多64个字符,可能后面会附有分隔符.他和MySQL中其他对象的命名方式基本相象

2.触发时间: 触发器有执行的时间配置:能够配置为事件发生前或后

3.事件:同样也能设定触发的事件:他们能够在执行insert、update或delete的过程中触发

4.表:触发器是属于某一个表的:当在这个表上执行插入、更新或删除操作的时候就导致触发器的激活.
  我们不能给同一张表的同一个事件安排两个触发器

5.( 步长)触发间隔:触发器的执行间隔:FOR EACH ROW子句通知触发器每隔一行执行一次动作,而不
   是对整个表执行一次。

6.语句:触发器包含所要触发的SQL语句:这里的语句能够是任何合法的语句,包括复合语句,但是这里的语句
  受的限制和函数的相同。

您必须拥有相当大的权限才能创建触发器(CREATE TRIGGER)。
假如您已是Root用户,那么就足够了。这跟SQL的标准有所不同。

示例:

mysql> DELIMITER //
mysql>
mysql> CREATE TABLE t22 (s1 INTEGER)//
CREATE TRIGGER t22_bi
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TRIGGER t22_bi
    -> BEFORE INSERT ON t22
    -> FOR EACH ROW
    -> BEGIN
    -> SET @x = 'Trigger was activated!';
    -> SET NEW.s1 = 55;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)
mysql>



mysql> INSERT INTO t22 VALUES (1)//
Query OK, 1 row affected (0.00 sec)


让我们看假如向表t2中插入一行数据触发器对应的表会怎么样? 这里的插入的动作是很常见的,我们无需触发器的权限来执行他。甚至无需知道是否有触发器关联。

mysql> SELECT @x, t22.* FROM t22//
+------------------------+------+
| @x                     | s1   |
+------------------------+------+
| Trigger was activated! |   55 |
+------------------------+------+
1 row in set (0.00 sec)
mysql>



说明:
在最开始我创建了一个名字为t22的表,然后在表t22上创建了一个触发器t22_bi,当我们要向表中的行插入时,触发器就会被激活,执行将s1列的值改为55的动作。

大家能够看到INSERT动作之后的结果,和我们预期的相同,x标记被改变了,同时这里插入的数据不是我们开始输入的插入数据,而是触发器自己的数据。


对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句能够在和NEW连同OLD同时使用

=====================================================================

参考文档
http://www.sudu.cn/info/html/edu/mysql/20071109/97075.html

=====================================================================


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66227/showart_1007441.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP