MySql 触发器实例

MySql 触发器实例

ID:40560242

大小:38.00 KB

页数:7页

时间:2019-08-04

MySql 触发器实例_第1页
MySql 触发器实例_第2页
MySql 触发器实例_第3页
MySql 触发器实例_第4页
MySql 触发器实例_第5页
资源描述:

《MySql 触发器实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MySql 触发器实例~~语法~~CREATETRIGGER<触发器名称> --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{BEFORE

2、AFTER} --触发器有执行的时间设置:可以设置为事件发生前或后。{INSERT

3、UPDATE

4、DELETE} --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。ON<表名称> --触发器是属于某一个表的:当在这个表上执行插入、更新或删除操作的时候就导致触发器的激活.我们不能给同一张表的同一个事件安排两个触发器。FOREACHROW --触发器的执行

5、间隔:FOREACHROW子句通知触发器每隔一行执行一次动作,而不是对整个表执行一次。<触发器SQL语句> --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句,包括复合语句,但是这里的语句受的限制和函数的一样。--你必须拥有相当大的权限才能创建触发器(CREATETRIGGER),如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。~~实例~~Example1:创建表tab1DROPTABLEIFEXISTStab1;CREATETABLEtab1(   tab1_idvarchar(11));创建表tab2DROPTABLEIFEXISTStab2;CREA

6、TETABLEtab2(   tab2_idvarchar(11));创建触发器:t_afterinsert_on_tab1作用:增加tab1表记录后自动将记录增加到tab2表中DROPTRIGGERIFEXISTSt_afterinsert_on_tab1;CREATETRIGGERt_afterinsert_on_tab1AFTERINSERTONtab1FOREACHROWBEGIN    ifnew.tab1_idisnotnullthen       insertintotab2(tab2_id)values(new.tab1_id);    endif;END;测试一下INSE

7、RTINTOtab1(tab1_id)values('0001');看看结果SELECT*FROMtab1;SELECT*FROMtab2;高级实例CREATETRIGGERt1beforeINSERTONdataFOREACHROWBEGINdeclaretodayMaxIdint;//申明变量declareseralvarchar(20);selectmax(intId)intotodayMaxIdfromeverydayintidwhereyear(addDate)=year(NOW())andmonth(addDate)=month(NOW())andday(addDate)=da

8、y(NOW());if(todayMaxIdisnull)thensettodayMaxId=0;//给变量赋值endif;settodayMaxId=todayMaxId+1;insertintoeverydayintid(addDate,intId)values(now(),todayMaxId);setseral=CAST(todayMaxIdaschar(20));while(length(seral)<4)dosetseral=concat(0,seral);endwhile;setNEW.serialId=concat('jd',year(NOW()),month(NOW())

9、,day(NOW()),seral);END;Example2:创建触发器:t_afterdelete_on_tab1作用:删除tab1表记录后自动将tab2表中对应的记录删去DROPTRIGGERIFEXISTSt_afterdelete_on_tab1;CREATETRIGGERt_afterdelete_on_tab1AFTERDELETEONtab1FOREACHROWBEGIN     deletefromtab2wheretab2_id=old.tab1_id;END;测试一下DELETEFROMtab1WHEREtab1_id='0001';看看结果SELECT*FROMta

10、b1;SELECT*FROMtab2;postscript:查看触发器用SHOWTRIGGERS触发器是属于一个表的,当在这个表上执行insert,update,delete操作时,就会导致相应的触发器被激活;不能给同一个表的同一个操作创建两个不同的触发器。触发间隔:FOREACHROW子句通知MySQL触发器每隔一行执行一次动作,而不是对整下表执行一次。 在触发器的SQL语句中,你可以关联表中的任意列。但你不能仅使用列

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。