# 创建操作前触发器,操作行为包括: INSERTDELETEUPDATE CREATETRIGGER 触发器名称 BEFORE 操作行为 ON tb1 FOREACHROW BEGIN ... END # 创建操作后触发器 CREATETRIGGER 触发器名称 AFTER 操作行为 ON tb1 FOREACHROW BEGIN ... END # 删除触发器 droptrigger 触发器名称
一个触发器的例子
1 2 3 4 5 6 7 8
delimiter // # 这里需要先定义语句的分隔符号,避免跟默认的 ; 冲突,导致无法判断触发器语句的起始 CREATETRIGGER tri_after_insert_cmd AFTER INSERTON cmd FOREACHROW BEGIN IF NEW.success ='no'THEN #等值判断只有一个等号 INSERTINTO errlog(err_cmd, err_time) VALUES(NEW.cmd, NEW.sub_time) ; #必须加分号 END IF ; #必须加分号 END// delimiter ;
# 如果test是真,则返回result,否则返回default CASE WHEN[test] THEN [result]...ELSE [default] END # 如果test和val相等,则返回result,否则返回default CASE [test] WHEN[val1] THEN [result]...ELSE [default]END # 如果test是真,返回t;否则返回f IF(test,t,f) # 如果arg1不是空,返回arg1,否则返回arg2 IFNULL(arg1,arg2) # 如果arg1=arg2返回NULL;否则返回arg1 NULLIF(arg1,arg2)
自定义函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# 创建函数(例子) # 函数中不要写sql语句(否则会报错),函数仅仅只是一个功能,是一个在sql中被应用的功能 delimiter // createfunction f1( i1 int, i2 int) returnsint BEGIN declare num int; set num = i1 + i2; return(num); END// delimiter ; # 删除函数 dropfunction 函数名; # 执行函数 selectUPPER('egon') into@res; SELECT@res;