MySQL触发器简单用法示例
本文实例讲述了MySQL触发器简单用法。分享给大家供大家参考,具体如下:
mysql触发器和存储过程一样,是嵌入到mysql的一段程序,触发器是由事件来触发的,这些事件包括,INSERT,UPDATE,DELETE,不包括SELECT
创建触发器
CREATETRIGGERname,time,eventONtable_nameFOREACHROWtrigger_stmt
例如
CREATETRIGGERins_sumBEFOREINSERTONaccountFOREACHROWSET@sum=@sum+NEW.amount
有多个执行语句的触发器
CREATETABLEtest1(a1INT); CREATETABLEtest2(a2INT); CREATETABLEtest3(a3INTNOTNULLAUTO_INCREMENTPRIMARYKEY); CREATETABLEtest4( a4INTNOTNULLAUTO_INCREMENTPRIMARYKEY, b4INTDEFAULT0 ); DELIMITER// CREATETRIGGERtestrefBEFOREINSERTONtest1 FOREACHROWBEGIN INSERTINTOtest2SETa2=NEW.a1; DELETEFROMtest3wherea3=NEW.a1; UPDATEtest4SETb4=b4+1WHEREa4=NEW.a1; END // DELIMITER; INSERTINTOtest3(a3)VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL); INSERTINTOtest4(a4)VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0); //开始测试 INSERTINTOtest1VALUES(1),(3),(1),(7),(1),(8),(4),(4);
查看触发器
SHOWTRIGGERS\G;//查看所有 SELECT*FROMinformation_schema.TRIGGERSwhereTRIGGER_NAME='testref';
删除触发器
DROPTRIGGERtestref;
综合案例
步骤1:创建persons表
CREATETABLEpersons(nameVARCHAR(40),numint);
步骤2:创建一个销售额表sales
CREATETABLEsales(nameVARCHAR(40),sumint);
步骤3:创建一个触发器
CREATETRIGGERnum_sumAFTERINSERTONpersons FOREACHROWINSERTINTOsalesVALUES(NEW.name,7*NEW.num);
步骤4:向persons表中插入记录
INSERTINTOpersonsVALUES('xiaoxiao',20),('xiaohua',69); SELECT*FROMpersons; SELECT*FROMsales;
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》
希望本文所述对大家MySQL数据库计有所帮助。