触发器
1|0定义
触发器是在数据库中,在执行对资料有异动的动作时,先行拦截并处理的一种数据库对象,它大部分会设在资料表中,作为强制运行特定动作的程序,因此又称为数据库操纵语言(DML)触发器。
2|0优点
- 可在写入资料前,强制检验或转换资料
- 触发程序发生错误时,异动的结果会被撤销
3|0种类
- BEFORE:在异动发生前执行
- AFTER:在异动发生后运行
- INSTEAD OF:替换异动的指令
4|0语法
CREATE TRIGGER<>
{BEFORE | AFTER} <触发事件> ON <表名>
REFERENCING NEW|OLD ROW AS <变量>
FOR EACH {ROW | STATEMENT}
[WHEN <触发条件>]<触发动作体>
注意:触发器只能定义在基本表上,不能定义在视图上
5|0触发器类型
行级触发器(FOR EACH ROW):触发器发生的次数与表的行数有关
语句级触发器(FOR EACH STATEMENT):触发动作只发生一次
6|0举个例子
7|0课后习题
1.建设之前创建的course表没有定义外键级联策略,创建触发器,实现在course表中删除课程信息时,可自动删除该课程在SC表上的成绩信息。
思路:
通过上面关于触发器的基础知识的了解,我们很容易写出这道问题的代码的基本框架
这里我们首先使用的是行级触发器,因为这道问题比较简单,所以就没有写触发动条件,触发动作体在触发器激活后立即执行。现在我们要解决的是应该怎么来实现触发动作体,因为我们使用的是行级触发器,可以在过程体中使用NEW和OLD引用事件之后的新值和事件之前的旧值。在不同的触发器中NEW和OLD的含义各不相同
mysql触发器中, NEW关键字,和 MS SQL Server 中的 INSERTED 和 DELETED 类似,MySQL 中定义了 NEW 和 OLD,用来表示触发器的所在表中,触发了触发器的那一行数据。
具体地:
在 INSERT 型触发器中,NEW 用来表示将要(BEFORE)或已经(AFTER)插入的新数据;
在 UPDATE 型触发器中,OLD 用来表示将要或已经被修改的原数据,NEW 用来表示将要或已经修改为的新数据;
在 DELETE 型触发器中,OLD 用来表示将要或已经被删除的原数据;
使用方法: NEW.columnName (columnName 为相应数据表某一列名)
另外,OLD 是只读的,而 NEW 则可以在触发器中使用 SET 赋值,这样不会再次触发触发器,造成循环调用。
————————————————
版权声明:本文为CSDN博主「问就是啥也不是」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bcfdsagbfcisbg/article/details/78338434
SQL:
执行前s_score表:
执行前course表:
执行后
执行后score表:
从最后的结果中我们可以看出,再删除语句中我们并没有删除score表中的内容,但是因为我们设置了一个触发器,当我们要删除course表中的课程时,score表中与该课程有关的元组也会被删除。
当然,除了使用这种方法来进行级联删除之外,我们还可以使用外键的方式来进行删除。
2. 创建触发器,实现当删除student表的某个学生信息时,把该学生的学号和姓名添加到de_student表中。
3. 创建触发器,实现当course表中某门课程的课程号被更改时,同时将SC表上的课程号全部更新。
4. 创建触发器,实现当删除student表的某个人信息时,可自动删SC表上相应的成绩记录。
__EOF__

本文链接:https://www.cnblogs.com/h-hkai/p/14912388.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2020-06-21 1021 Deepest Root