mysql数据库之触发器

news2024/10/1 7:45:49

触发器是与表有关的数据库对象,指在insert、update、delete之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。

使用别名old和new来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。

触发器类型new和old
insert触发器new表示将要或者已经新增的数据
update触发器old表示修改之前的数据,new表示将要或已经修改后的数据
delete触发器old表示将要或者已经删除的数据

一、语法。

1、创建。

create trigger trigger_name
before/after insert/update/delete
on tbl_name for each row #行级触发器
begin
  trigger_stmt;
end;

2、查看。

show triggers;

3、删除。

drop trigger [schema_name.]trigger_name;#如果没有指定数据库名字schema_name,默认为当前数据库

二、案例一。

通过触发器记录tb_user表的数据变更日子,将变更日志插入到日志表user_logs中,包含增加、修改、删除;

1、创建表user_logs

2、定义插入数据表的触发器

create trigger tb_user_insert_trigger
after insert on tb_user for each row
begin
  insert into user_logs(id,operation,operate_time,operate_id,operate_params) values
  (null,'insert',now(),new.id,concat('插入的数据为:id=',new.id,',name=',new.name,',phone=',new.phone,',email=',new.email,',profession=',new profession));
end;

3、查看触发器

show triggers;

4、删除指定的触发器

drop trigger tb_user_insert_trigger;

5、插入数据到tb_user表中

 insert into user_logs(id,name,phone,email,profession,age,gender,status,createtime) values
  (25,'二皇子','18803031212','erhuangzi@163.com','软件工程',23,'1','1',now());

6、mysql数据库查看显示插入记录。

7、修改数据触发器

create trigger tb_user_update_trigger
after update on tb_user for each row
begin
  insert into user_logs(id,operation,operate_time,operate_id,operate_params) values
  (null,'update',now(),new.id,
concat('更新之前的数据:id=',old.id,',name=',old.name,',phone=',old.phone,',email=',old.email,',profession=',old profession,'更新之后的数据:id=',new.id,',name=',new.name,',phone=',new.phone,',email=',new.email,',profession=',new profession));
end;

show triggers;

8、把id为23的age更改为32,把这条数据的专业改为会计

update tb_user set age = 32 where id = 23;
update tb_user set profession = '会计' where id = 23;
#把id小于等于5的专业改为会计,触发器质性5次,因为是行级触发器
update tb_user set profession = '会计' where id <= 5;

9、删除数据的触发器

create trigger tb_user_delete_trigger
after delete on tb_user for each row
begin
  delete into user_logs(id,operation,operate_time,operate_id,operate_params) values
  (null,'delete',now(),old.id,
concat('删除之前的数据:id=',old.id,',name=',old.name,',phone=',old.phone,',email=',old.email,',profession=',old profession));
end;

show triggers;

10、删除id等于25的记录。

delete from tb_user where id = 25;

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

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

相关文章

华为OD机试题,用 Java 解【子序列长度】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

力扣第99场双周赛题目记录(复盘)

第一题 2578.最小和分割 给你一个正整数 num &#xff0c;请你将它分割成两个非负整数 num1 和 num2 &#xff0c;满足&#xff1a; num1 和 num2 直接连起来&#xff0c;得到 num 各数位的一个排列。 换句话说&#xff0c;num1 和 num2 中所有数字出现的次数之和等于 num 中所…

DolphinScheduler理论知识以及手机、邮箱、钉钉、电话等多种告警部署实操

1、DolphinScheduler简介 1.1、DolphinScheduler概述 Apache DolphinScheduler是一个新一代分布式、易扩展的可视化大数据工作流任务调度平台&#xff0c;致力于“解决大数据任务之间错综复杂的依赖关系&#xff0c;整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任…

IDEA插件开发.02之“异味”代码收集插件

前言许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”&#xff0c;共享文档复制黏贴略显麻烦&#xff0c;所以想着是否可以搞一个IDEA插件来帮忙收集常见代码&#xff0c;毕竟IDEA作为后端程序员必备的开发工具&#xff0c;显然会方便很多。于是&…

STM32开发(七)STM32F103 显示 —— 数码管显示 详解

文章目录一、基础知识点二、开发环境三、STM32CubeMX相关配置四、Vscode代码讲解五、结果演示一、基础知识点 了解 TM1620芯片手册 。本实验是基于STM32F103开发 通过GPIO模拟时序 实现TM1620数码管显示。 准备好了吗&#xff1f;开始我的show time。 二、开发环境 1、硬件开…

flink sql (jdbc)如何支持where 条件下推数据库

背景 最近在使用 flink sql &#xff08;jdbc&#xff09;做离线数据同步&#xff08;历史数据修复&#xff09;&#xff0c;遇到一个问题&#xff0c;只同步几条数据的情况下&#xff0c;测试环境执行竟然需要30分钟。 进一步研究&#xff0c;发现where条件没有下推到数据库…

项目心得--网约车

一、RESTFULPost&#xff1a;新增Put&#xff1a;全量修改Patch&#xff1a;修改某个值Delete: 删除Get&#xff1a;查询删除接口也可以用POST请求url注意&#xff1a;url中不要带有敏感词&#xff08;用户id等&#xff09;url中的名词用复数形式url设计&#xff1a;api.xxx.co…

分形(Fractal)及分形维数(Fractal dimension)

文章目录1. 分形介绍2. 分形的定义3. 分形维数介绍4. 历史5. 缩放的作用&#xff08;Role of scaling&#xff09;6. D 不是唯一描述符7. 分形表面结构8. 例子8.8 Hausdorff dimension8.8.1 直观概念8.8.2 正式定义8.8.2.1 Hausdorff dimension8.8.2.2 Hausdorff content8.8.3 …

C++ 实现一个反射类

代码环境为VScode CMake GCC 8.1.0 首先&#xff0c;如何才能做到给我一个名字我就能拿到这个对象的这个值&#xff0c;也是比较难的一个地方&#xff0c;方法如下 #define OFFSET(className,fieldName) (size_t)&(((className*)0)->fieldName)这个能够得到该成员变…

数据结构3——线性表2:线性表的顺序结构

顺序结构的基本理解 定义&#xff1a; 把逻辑上相邻的数据元素存储在物理上相邻&#xff08;占用一片连续的存储单元&#xff0c;中间不能空出来&#xff09;的存储单元的存储结构 存储位置计算&#xff1a; LOC(a(i1))LOC(a(i))lLOC(a(i1))LOC(a(i))l LOC(a(i1))LOC(a(i))l L…

【pyqt】win10下使用pycharm安装并配置pyqt环境,并用其进行界面绘制

目录1.PyQt简介2.PyQt安装2.PyQt中界面绘制工具集在pycharm中的配置2.主程序引入生成的界面类1.PyQt简介 PyQt是一个基于Python语言的开源图形用户界面&#xff08;GUI&#xff09;框架&#xff0c;它是Qt跨平台应用程序框架的Python绑定&#xff0c;可以用于创建各种不同类型…

js 拷贝

一、浅拷贝 对数据拷贝的时候只拷贝一层&#xff0c;深层次的只拷贝了地址 1. &#xff08;1&#xff09;对于数组类型&#xff0c;可以使用slice(start, end)方法&#xff0c;返回一个新的数组。 var arr1 arr.slice(0); &#xff08;备注&#xff1a;slice 方法一直复制到…

(Fabric 超级账本学习【2】)Fabric2.4环境下部署自己编写的链码

&#xff08;Fabric 超级账本学习【2】&#xff09;Fabric2.4环境下部署自己编写的链码 1、前提是搭建好了Fabric 2.4&#xff08;Fabric2.x&#xff09;版本的区块链网络&#xff0c;并在以此环境下部署自己编写的链码&#xff0c;如下图先进入 test-network 文件夹目录下 2、…

23年PMP考试,应试技巧二十五条(含资料)

1.一定要认真阅读答案的全部四个选项。 千万不要看到某个选项是正确的&#xff0c;就不看其他选项&#xff0c;因为可能还有更正确的选项。PMP考的是选项的相对正确程度&#xff0c;而不是绝对正确程度&#xff0c;这与英语水平考试截然不同。可能四个选项都是正确或错误的&am…

Linux进程间通信详解(最全)

进程间的五种通信方式介绍 进程间通信&#xff08;IPC&#xff0c;InterProcess Communication&#xff09;是指在不同进程之间传播或交换信息。IPC的方式通常有管道&#xff08;包括无名管道和命名管道&#xff09;、消息队列、信号量、共享内存、Socket&#xff08;套接字&a…

项目实战典型案例20——内存长期占用导致系统慢

内存长期占用导致系统慢一&#xff1a;背景介绍出现的问题二&#xff1a;思路&方案下面是对于这三个原因的解决方案1.服务启动时分配的堆内存过小2. 具有大量大对象被创建&#xff0c;并且没有及时被GC回收或者由于具有引用GC无法回收3.当GC之后&#xff0c;虽然会清理堆内…

再获认可!腾讯安全NDR获Forrester权威推荐

近日&#xff0c;国际权威研究机构Forrester发布最新研究报告《The Network Analysis And Visibility Landscape, Q1 2023》&#xff08;以下简称“NAV报告”&#xff09;&#xff0c;从网络分析和可视化&#xff08;NAV&#xff09;厂商规模、产品功能、市场占有率及重点案例等…

LeetCode刷题——回溯法

文章目录[中等]全排列[中等]全排列 II[中等]组合总和[中等]组合总和 II[中等]复原 IP 地址[中等]括号生成[中等]子集[中等]单词搜索[中等]组合[中等]全排列 原题链接题解 class Solution { public:vector<vector<int>> ans;vector<int> num;int flag[10];v…

三天吃透消息队列面试八股文

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

OSPF路由协议总结

OSPF路由协议总结一 OSPF协议的三个工作步骤二 5中OSPF协议报文三 4种网络类型&#xff0c;邻居和邻接3.1 P2P3.2 P2MP3.3 Broadcase3.4 NBMA&#xff08;非广播多路访问&#xff09;四 OSPF协议的度量方式五 LS&#xff08;链路状态&#xff09; LSA&#xff08;链路状态通告&…