欢迎来到天天文库
浏览记录
ID:8979274
大小:17.54 KB
页数:6页
时间:2018-04-13
《mysql触发器语法简介》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、mysql 触发器语法简介 mysql触发器语法简介2011-03-141459tagmysql触发器语法fanglor1.语法命名规则CREATETRIGGER触发器名称--BEFOREAFTERINSERTUPDATEDELETEON表名称FOREACHROW触发器SQL语句触发器必须有名字最多64个字符可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.这里我有个习惯就是用表的名字_触发器类型的缩写.因此如果是表t26触发器是在事件UPDATE参考下面的点2和3之前BEFORE的那么它的名字就是t26_bu。2.语法触发时间CREATETRIGGER触发器名称BEFORE
2、AFTER--INSERTUPDATEDELETEON表名称FOREACHROW触发的SQL语句触发器有执行的时间设置可以设置为事件发生前或后BEFOREAFTER。3.语法事件CREATETRIGGER触发器名称BEFOREAFTERINSERTUPDATEDELETE--ON表名称FOREACHROW触发的SQL语句同样也能设定触发的事件它们可以在执行insert、update或delete的过程中触发。4.语法表CREATETRIGGER触发器名称BEFOREAFTERINSERTUPDATEDELETEON表名称--FOREACHROW触发的SQL语句触发器是属于某一个表的当在这个表
3、上执行插入、更新或删除操作的时候就导致触发器的激活.我们不能给同一张表的同一个事件安排两个触发器。5.语法步长触发间隔CREATETRIGGER触发器名称BEFOREAFTERINSERTUPDATEDELETEON表名称FOREACHROW--触发的SQL语句触发器的执行间隔FOREACHROW子句通知触发器每隔一行执行一次动作而不是对整个表执行一次。6.语法语句CREATETRIGGER触发器名称BEFOREAFTERINSERTUPDATEDELETEON表名称FOREACHROW触发的SQL语句--触发器包含所要触发的SQL语句这里的语句可以是任何合法的语句包括复合语句但是这里的语句
4、受的限制和函数的一样。Privileges权限你必须拥有相当大的权限才能创建触发器CREATETRIGGER。如果你已经是Root用户那么就足够了。这跟SQL的标准有所不同。因此在下一个版本的MySQL中你完全有可能看到有一种叫做CREATETRIGGER的新权限。然后通过这样的方法赋予GRANTCREATETRIGGERON表名称TO用户或用户列表也可以通过这样收回权限REVOKECREATETRIGGERON表名称FROM用户或用户列表 MySQL触发器语法详解.一CREATETRIGGER语法CREATETRIGGERtrigger_nametrigger_timetrigger_ev
5、entONtbl_nameFOREACHROWtrigger_stmt触发程序是与表有关的命名数据库对象当表上出现特定事件时将激活该对象。触发程序与命名为tbl_name的表相关。tbl_name必须引用永久性表。不能将触发程序与TEMPORARY表或视图关联起来。trigger_time是触发程序的动作时间。它可以是BEFORE或AFTER以指明触发程序是在激活它的语句之前或之后触发。trigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一·INSERT将新行插入表时激活触发程序例如通过INSERT、LOADDATA和REPLACE语句。·UPD
6、ATE更改某一行时激活触发程序例如通过UPDATE语句。·DELETE从表中删除某一行时激活触发程序例如通过DELETE和REPLACE语句。请注意trigger_event与以表操作方式激活触发程序的SQL语句并不很类似这点很重要。例如关于INSERT的BEFORE触发程序不仅能被INSERT语句激活也能被LOADDATA语句激活。可能会造成混淆的例子之一是INSERTINTO.ONDUPLICATEUPDATE.语法BEFOREINSERT触发程序对于每一行将激活后跟AFTERINSERT触发程序或BEFOREUPDATE和AFTERUPDATE触发程序具体情况取决于行上是否有重复键。对
7、于具有相同触发程序动作时间和事件的给定表不能有两个触发程序。例如对于某一表不能有两个BEFOREUPDATE触发程序。但可以有1个BEFOREUPDATE触发程序和1个BEFOREINSERT触发程序或1个BEFOREUPDATE触发程序和1个AFTERUPDATE触发程序。trigger_stmt是当触发程序激活时执行的语句。如果你打算执行多个语句可使用BEGIN.END复合语句结构。这样就能使用存储子程序
此文档下载收益归作者所有