6.1触发器的创建、删除和使用

news2024/11/26 2:41:40

6.1.1 触发器概述

        触发器是一个被指定关联到表的数据库对象,与表的关系密切,不需要用户调用,在一个表的特定事件出现时将会被激活,此时某些MySql语句会自动执行。
触发器用于实现数据库的完整性,具有以下特点:
       • 可以提供更强大的约束。
       • 可以对数据库中的相关表实现联级更改。
       • 可以评估数据修改前后表的状态,并根据该差异采取措施。
       • 强制表的修改要合乎业务规则。
缺点是增加决策和维护的复杂度。

6.1.2 创建触发器

语法格式:
create TRIGGER trigger_name trigger_time trigger_event 
     on tbl_name for each row trigger_body
说明: 
(1)trigger_name:指定触发器名称。 
(2)trigger_time:触发器被触发的时刻,有两个选项,before用于激活其语句之前触发,after用于激活其语句之后触发。 
(3)trigger_event:触发事件,有insert、update、delete。
        ① insert:在表中插人新行时激活触发器。 
        ②update:更新表中某一行时激活触发器。 
        ③delete:删除表中某一行时激活触发器。 
(4) for each row:用于指定对于受触发事件影响的每一行,都要激活触发器的动作。 
(5)trigger_body:触发动作的主体,即触发体,包含触发器激活时将要执行的语句。 
                            如果要执行多个语句,可使用BEGIN…END复合语句结构。 
在触发器的创建中,每个表、每个事件每次只允许创建一个触发器,所以每条insert、update、delete的前或后可创建一个触发器,每个表最多可创建6个触发器。

【例6.1】在数据库study中的选课表创建触发器T_insertScoreRecord,当向选课表插入一条记录时,显示正在插入记录。

CREATE TRIGGER T_insertScoreRecord
    AFTER INSERT
    ON 选课 FOR EACH ROW
    SET @str = '正在插入记录';

验证触发器功能,向选课表通过insert语句插入一条记录。

insert into 选课
    value('060103','c02','91');
select @str;

1e7e5f449f79412287883b758572c24b.png
6.1.3 删除触发器

语法格式:drop trigger [ schema_name ] trigger_name

说明:
(1)schema_name:可选项,用于指定触发器所在数据库的名称。如果没有指定,则为当前默认数据库。
(2)trigger_name:要删除的数据库名称。

当删除一个表时,同时自动删除该表上的触发器。

【例6.2】删除触发器T_insertScoreRecord

drop trigger T_insertScoreRecord;

455947fdfe3f4dfeb9b23c1d0596a7a5.png
6.1.4 使用触发器

1. insert触发器

在insert语句执行前或执行后执行。
(1)其触发器内可引用一个名为new的虚拟表来访问被插入的行。
(2)在before insert触发器中,new中的值可以被更新。

【例6.3】在数据库study的学生表中创建触发器T_insertStudentRecord,当向学生表插入一条记录时,显示插入记录的学生的姓名。

CREATE TRIGGER T_insertStudentRecord
    AFTER INSERT
    ON 学生 FOR EACH ROW
    SET @str = new.姓名;

验证触发器功能,向学生表通过insert语句插入一条记录。

insert into 学生
    values('060104','刘莉','女','21','19计科2','山东日照');
 
select @str;

5242abe2d885445ca55473cfc5654fee.png
2. update触发器

(1) Insert触发器的触发体内可以用一个名为OLD的虚拟表来访问更新以前的值,也可以引用一个名为new的虚拟表来访问更新以后的值。
(2)在before update触发器中,new中的值可能已被更新。
(3)OLD中的值不能被更新。

【例6.4】在数据库study的课程表中。创建一个触发器T_updateCourseScore。更新课程表中某门课程的课程号时,同时更新选课表中所有相应的课程号。

创建触发器:

CREATE TRIGGER T_updateCourseScore
    AFTER UPDATE ON 课程 FOR EACH ROW
    BEGIN
      UPDATE 选课 SET 课程号 = NEW.课程号 WHERE 课程号 = OLD.课程号;
    END;

验证功能:

update 课程 set 课程号 = 'c03' where 课程号 = 'c06';
 
select * from 选课 where 课程号 = 'C06';

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1833839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python机器学习实战】----基于AdaBoost分类树模型、梯度提升分类树模型、Bagging分类树模型以及随机森林分类模型对空气质量等级进行预测

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

前端学习笔记100篇之002:Webpack简明教程(持续完善中)

文章目录 1. **安装和初始化**2. **创建和配置入口文件**3. **编写和配置Webpack配置文件**4. **打包和运行项目** Webpack是一个静态模块打包工具,适用于前端项目构建和模块化开发。Webpack通过从入口文件构建依赖图,然后打包相关的模块,最终…

什么是小语言模型?

介绍 近年来,人工智能领域取得了重大进展,尤其是在自然语言处理领域。GPT-3 和 PaLM 等大型语言模型因其出色的能力而备受关注,新一波小型语言模型正在兴起,它们在性能和效率之间提供了有希望的平衡。 什么是小语言模型&#xf…

[AIGC] 图论基础入门

图论是数学的一个分支,旨在研究图(graph)的属性和应用。这是一个跨学科领域,因为图论可以用于描述和解决各种实际问题。如社交网络分析,电脑网络,生物网络等。 文章目录 什么是图?图的基本性质L…

应急便携式气象观测站

TH-BQX5自然灾害,如台风、暴雨、洪涝、干旱等,给人们的生命财产安全带来了巨大威胁。在应对这些灾害时,准确的气象观测数据是制定有效应对策略的基础。近年来,应急便携式气象观测站在自然灾害的监测和预警中发挥了越来越重要的作用…

python GUI开发: tkinter选项卡,移动滑块,颜色选择框,文本对话框,对话输入框,通用消息框模块用法详解

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Vue57-组件的自定义事件_解绑

给谁绑的自定义事件,就找谁去触发;给谁绑的自定义事件,就找谁去解绑; 一、解绑自定义事件 1-1、解绑一个自定义事件 到student.vue组件中去解绑。 1-2、解绑多个自定义事件 使用数组来解绑多个。 1-3、解绑所有的自定义事件 二、…

Linux-远程访问及控制

一、SSH远程管理 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的 Telent(远程登录…

计算机毕业设计Python+Vue.js知识图谱音乐推荐系统 音乐爬虫可视化 音乐数据分析 大数据毕设 大数据毕业设计 机器学习 深度学习 人工智能

开发技术 协同过滤算法、机器学习、LSTM、vue.js、echarts、django、Python、MySQL 创新点协同过滤推荐算法、爬虫、数据可视化、LSTM情感分析、短信、身份证识别 补充说明 适合大数据毕业设计、数据分析、爬虫类计算机毕业设计 介绍 音乐数据的爬取:爬取歌曲、…

DFS 迷宫

个人感觉DFS没有递归那么烧脑 简单迷宫 如何接受二维数组 先构建A[MAXN][MAXN]&#xff0c;人后二重循环 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> using namespace std; const int N…

Ubuntuwin11双系统

一、准备工作 win11与ubuntu20.4双系统安装案例教程,先查看引导模式参数不服则不要安装否则会报异常 查看BIOS引导模式 查看磁盘分区格式 下载Ubuntu镜像 所有版本下载地址,我的华为云镜像ubuntu20.4这个版本地址

【ComfyUI】Stable Diffusion 3 加Controlnet

基于 instantX-research/diffusers_sd3_control: &#x1f917; Diffusers: State-of-the-art diffusion models for image and audio generation in PyTorch and FLAX. (github.com) 和 ZHO-ZHO-ZHO/ComfyUI-SD3-Medium-CN-Diffusers: ComfyUI SD3-Medium ControlNet&#…

HTTPS原理详解新版

http和https区别 附注&#xff1a; &#xff08;1&#xff09;SSL和TLS其实是一个东西&#xff1b; &#xff08;2&#xff09;完整性通过摘要和原文按照一定算法比对 Https的工作流程 加密算法 数据完整性 Https性能优化

强大的api管理系统Storm Core API_V1.1免授权源码

强大的api管理系统Storm Core API_V1.1免授权源码&#xff0c;带用户key和ip白名单功能 可设置付费操作等 更新日志 此次更新功能比较多 1.完善个人中心页面 2.完善注册登录页面 3.完善key功能 4.增加ip白名单功能 5.以及一些其他小小的美化 6.模板dxx的图片可单个自定…

uniapp 微信小程序更改轮播图指示点

仅微信小程序有效 /* #ifdef MP-WEIXIN */// 默认指示点样式wx-swiper .wx-swiper-dot {position: relative;background-color: #ffffff;width: 28rpx;border-radius: 10rpx;height: 8rpx;opacity: 0.4;}// 当前选中样式wx-swiper .wx-swiper-dot-active {background-color: #f…

Avalonia for VSCode

1、在VSCode中编辑AvaloniaUI界面&#xff0c;在VSCode中搜索Avalonia&#xff0c;并安装。如下图&#xff0c;可以发现Avalonia for VSCode还是预览版。 2、 创建一个Avalonia 项目。 选择项目类型 输入项目名称 选择项目所在文件夹 打开项目 3、项目架构如下图。 4、builde…

记一次线上jVM调优

文章目录 问题描述问题分析尝试优化业务代码优化方案修改后代码补充点 问题描述 部门调整&#xff0c;接手一个新项目&#xff0c;为方便后续描述叫user-web&#xff0c;随后推动IT降本&#xff0c;要求根据实际业务量调整服务器实例数量和配置&#xff0c;调整前服务器配置为…

docker命令docker desktop 安装 xiaomimi8/awvs14-log4j-2022 详细图文教程

docker命令docker desktop 安装 xiaomimi8/awvs14-log4j-2022 详细图文教程 1. 拉取镜像 通过命令拉取 # 拉取镜像 docker pull xiaomimi8/awvs14-log4j-2022 # 查看镜像 docker images通过doker desktop直接查看镜像 2. 启动镜像 通过命令启动 docker run -it -d -p 13…

SpringBoot购物网站

摘要 随着信息技术的高速发展&#xff0c;二十一世纪的网络技术和网络应用正在快速融入人们的生活&#xff0c;并且由于网络服务以及网络应用日渐普及&#xff0c;人们对于现在生活的需求也随之增长&#xff0c;而网上购物的便捷对人们的吸引力越来越大&#xff0c;购物网站可…

阿里云 邮件系统DNS域名解析 搭配 postfix+dovecot 邮件服务器

1 创建邮箱域名A记录(一般邮箱客户端&#xff0c;增加pop,imap,stmp 3条记录) 登录阿里云控制台--云解析DNS 2 MX记录 3 SPF记录