概述
一,解释
实现操作
假设 有 a表 , b表
当更改或插入或删除 a表的数据时 b表数据会同步更新
二,实战演练
试题
创建一个触发器trig_bbs_profile,当新增一条帖子记录时触发,使板块表的帖子数加1, 同时更新最近发帖时间
需求说明:bbs发一个帖子,板块总贴数加1
板块表bbs_board :
字段 board_id(板块id)、 board_name(板块名称),
profile_num(帖子数), last_time(最近发帖时间)
图示:
帖子表bbs_profile:
字段 id(帖子id), board_id(板块id), title(标题),
content(内容), user_id(创建人), user_id(创建人),
create_time(发帖时间)
图示:
三,代码演练
比如 更新
当 bbs_profile表有更改数据操作时 , bbs_board表中profile_num 列值+1,且获取最新时间
代码:
DROP trigger if EXISTS tr;
delimiter//
CREATE trigger tr AFTER UPDATE ON bbs_profile
for each row
begin
UPDATE bbs_board SET profile_num=profile_num+1 , bbs_board.last_time=NOW()
WHERE bbs_board.board_id=new.board_id; --通过两表共有的board_id 连接两表
END//
delimiter;
四,注释
注释字符 **
4.1注释:
drop trigger if EXISTS tr; ** 如果存在此名的触发器替换掉 如果不存在就新建
delimiter//
create trigger 触发器名字 时间(after|before)触发动作 (update,insert,delete) ON 表1
for each row **固定语法 无具体意义但必须写
begin
sql语句 表2;
end// **begin与end之间 表二的执行语句
delimiter;
**当表1 出现触发动作时 表二的数据会同步
4.2单释:
时间: after 触发之后执行 表二的sql语句
before 触发之前执行 表二的sql语句
触发动作:表1的 增删改操作
delimiter :结束符 成对出现 表示让系统知悉运行结束
最后
以上就是难过抽屉为你收集整理的MySQL触发器一,解释二,实战演练 三,代码演练四,注释 的全部内容,希望文章能够帮你解决MySQL触发器一,解释二,实战演练 三,代码演练四,注释 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复