首页 / MYSQL / 认识MySQL触发器
认识MySQL触发器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了认识MySQL触发器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1838字,纯文字阅读大概需要3分钟。
内容图文
![认识MySQL触发器](/upload/InfoBanner/zyjiaocheng/862/b190985b67584afa8e8c6f668227a7e3.jpg)
简述触发器
MySQL触发器可以理解为是一个监听器或一个事件,一旦表中的数据有变化,就会触发一个事件,执行该事件内的逻辑代码。
- 可以激活触发器的操作:INSERT、UPDATE、DELETE(查询操作不会激活触发器)
- 可以设置激活触发器的时刻:before(在操作执行之前激活)、after(在操作执行之后激活)
创建或删除触发器
# 创建
create trigger trigger_name before/after insert/update/delete on table_name for each row sql语句
例如:
# 每次在test表插入数据前 都往test2表内插入一条数据(名字:小明,性别:男,年龄:18)
create trigger test_trigger before insert on test for each row insert into test2 values(null, '小明', '男', 18);
# 删除
drop trigger trigger_name
图解创建语句
NEW与OLD的使用
NEW.col_name是获取当前触发器要操作的表内列的新值,比如insert会往表的列中插入新值,update会更新新值到表的列中。这些新值都是可以在触发器中使用的,但是得加上NEW标明要使用这个值。
OLD.col_name同理,触发器操作列中的旧值。
- INSERT操作只能使用NEW,不能使用OLD。
- UPDATE操作在before情况下能使用NEW和OLD,在after情况下只能使用NEW。
- DELETE操作只能使用OLD,不能使用NEW。
INSERT
如果插入的学生的年龄小于18 则年龄为18
create trigger student_insert_trigger
before/after insert on student
for each row
SET NEW.age = IF(NEW.age < 18, 18, NEW.age);
UPDATE
如果在更新前 新年龄小于18,则使用旧年龄更新进去(值不变),否则使用新年龄更新进去。
create trigger student_update_before_trigger
before update on student
for each row
SET NEW.age = IF(NEW.age < 18, OLD.age, NEW.age);
如果在更新后 新年龄大于100,则新年龄强制等于100。
create trigger student_update_after_trigger
before update on student
for each row
SET NEW.age = IF(NEW.age > 100, 100, NEW.age);
DELETE
删除一个学生,学生对应的班级人数减一。
create trigger student_delete_trigger
before delete on student
for each row
update grade set count = count - 1 where grade_id = old.grade_id
博主的博客网站:https://www.lollycode.com
觉得不错,点个赞再走呗!
内容总结
以上是互联网集市为您收集整理的认识MySQL触发器全部内容,希望文章能够帮你解决认识MySQL触发器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。