Mysql触发器的基本使用
创建触发器。创建触发器语法如下:
CREATE TRIGGER trigger_name trigger_time
trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
其中trigger_name标识触发器名称,用户自行指定;
trigger_time标识触发时机,用before和after替换;
trigger_event标识触发事件,用insert,update和delete替换;
tbl_name标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt是触发器程序体;触发器程序可以使用begin和end作为开始和结束,中间包含多条语句;
下面给出sfrd一个触发器实例:
CREATE TRIGGER
trig_useracct_update
AFTER UPDATE
ON SF_User.useracct FOR EACH ROW
BEGIN
IF OLD.ulevelid = 10101 OR OLD.ulevelid = 10104
THEN
IF NEW.ulevelid = 10101 OR NEW.ulevelid = 10104
THEN
if NEW.ustatid != OLD.ustatid OR NEW.exbudget != OLD.exbudget
THEN
INSERT into FC_Output.fcevent set type = 2, tabid = 1, level = 1,
userid = NEW.userid, ustatid = NEW.ustatid, exbudget =
NEW.exbudget;
end if;
ELSE
INSERT into FC_Output.fcevent set type = 1, tabid = 1, level = 1,
userid = NEW.userid, ustatid = NEW.ustatid, exbudget =
NEW.exbudget;
END IF;
END IF;
END;
触发器程序.txt
上述触发器实例使用了OLD关键字和NEW关键字。OLD和NEW可以引用触发器所在表的某一列,在上述实例中,OLD.ulevelid表示表
SF_User.useracct修改之前ulevelid列的值,NEW.ulevelid表示表SF_User.useracct修改之后
ulevelid列的值。另外,如果是insert型触发器,NEW.ulevelid也表示表SF_User.useracct新增行的
ulevelid列值;如果是delete型触发器OLD.ulevelid也表示表SF_User.useracct删除行的ulevelid列原值。
另外,OLD列是只读的,NEW列则可以在触发器程序中再次赋值。
上述实例也使用了IF,THEN ,ELSE,END
IF等关键字。在触发器程序体中,在beigin和end之间,可以使用顺序,判断,循环等语句,实现一般程序需要的逻辑功能。
<!-- 正文结束 -->
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20865951/viewspace-1114578/
,如需转载,请注明出处,否则将追究法律责任。