lintcode-2577 · 数据更新备份触发器

举报
搞前端的半夏 发表于 2021/11/30 22:23:20 2021/11/30
【摘要】 大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界! 描述请为教师表 teachers 设计一个触发器,当 teachers 更新数据时,将旧的数据复制到结构相同的备份表 teachers_bkp 中表定义...

大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界!

描述

请为教师表 teachers 设计一个触发器,当 teachers 更新数据时,将旧的数据复制到结构相同的备份表 teachers_bkp 中

表定义:teachers(教师表)

列名 类型 注释
id int unsigned 主键
name varchar 讲师姓名
email varchar 讲师邮箱
age int 讲师年龄
country varchar 讲师国籍

表定义:teachers_bkp(备份表)

列名 类型 注释
id int unsigned 主键
name varchar 讲师姓名
email varchar 讲师邮箱
age int 讲师年龄
country varchar 讲师国籍

样例

表内容1:teachers

id name email age country
1 ‘Eastern heretic’ eastern.heretic@gmail.com 20 ‘UK’
2 ‘Northern Beggar’ northern.beggar@qq.com 21 ‘CN’
3 ‘Western Venom’ western.venom@163.com 28 ‘USA’
4 ‘Southern Emperor’ southern.emperor@qq.com 21 ‘JP’
5 ‘Linghu Chong’ None 18 ‘CN’

表内容2:teachers_bkp

id name email age country

返回结果:

id name email age country
1 ‘Southern Emperor’ southern.emperor@qq.com 21 ‘JP’
2 ‘Western Venom’ western.venom@163.com 28 ‘USA’
3 ‘Eastern heretic’ eastern.heretic@gmail.com 20 ‘UK’
4 ‘Linghu Chong’ None 18 ‘CN’

题解

在mysql 中,可以使用 CREATE TRIGGER 语句创建触发器。

具体的语法格式如下:

CREATE TRIGGER <触发器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>

触发的事件是update,=>after update on teachers for each row.更改表中某一行数据时激活触发器

这里判断字段的值有没有变化,只要其中的一个值发生了变化,就会去执行insert into语句,把数据插入到teachers_bkp中。

create trigger after_teachers_update
after update on teachers for each row
begin
    if new.id != old.id or
    new.name !=old.name or 
    new.email!=old.email or 
    new.age!=old.age or 
    new.country != old.country then
        insert into teachers_bkp(name,email,age,country)
        values(old.name, old.email, old.age, old.country);
    end if;
end
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。