MySQL的触发器

一:概述

(1)介绍
(2)特性 

二:基本操作

-- 用户表
create table user(uid int primary key,username varchar(50) not null,password varchar(50) not null
);-- 用户信息操作日志表
create table user_logs(id int primary key auto_increment,time timestamp,log_text varchar(255)
);-- 需求1:当user表添加一行数据,则会自动在user_log添加日志记录
-- 定义触发器 trigger_test1
create trigger trigger_test1 after insert
on user for each row
insert into user_logs values(NULL,now(),'有新用户添加');-- 在user表添加数据,让触发器自动执行
insert into user values(1,'张三','123456');-- 需求2:当user表数据被修改时,则会自动在user_log添加日志记录
delimiter $$
create trigger trigger_test3 before update
on user for each row
begininsert into user_logs values(NULL,now(),'有用户信息被修改');
end $$
delimiter ;-- 在user表修改数据,让触发器自动执行
update user set password = '888888' where uid = 1;

三:NEW和OLD

-- 删除触发器
drop trigger if exists trigger_test2;-- NEW
-- 定义触发器:trigger_test3
drop trigger if exists trigger_test3;
create trigger trigger_test3 after insert
on user for each row
insert into user_logs values (NULL,now(),concat('有新用户添加,信息为:',NEW.uid,NEW.username,NEW.password));insert into user values(5,'赵六','123456');-- update类型的触发器
-- OLD
drop trigger if exists trigger_test4;
create trigger trigger_test4 after update
on user for each row
insert into user_logs values (NULL,now(),concat('有用户信息修改,修改前信息为:',OLD.uid,OLD.username,OLD.password));update user set password = '999999'where uid = 4;-- NEW
drop trigger if exists trigger_test5;
create trigger trigger_test5 after update
on user for each row
insert into user_logs values (NULL,now(),concat_ws(',','有用户信息修改,修改后信息为:',NEW.uid,NEW.username,NEW.password));update user set password = '000000'where uid = 1;-- delete类型的触发器
-- OLD
drop trigger if exists trigger_test6;
create trigger trigger_test6 after delete
on user for each row
insert into user_logs values (NULL,now(),concat_ws(',','有用户被删除,被删除用户信息为:',OLD.uid,OLD.username,OLD.password));delete from user where uid = 5;

四:其他操作

五:注意事项

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

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

相关文章

如何有效降低商业电子邮件被盗的风险?

一、什么是商业电子邮件泄露? 你是否曾经经历过信任某人,但最终却被背叛的痛苦?在商业环境中,业务电子邮件泄露(BEC)就是一种通过电子邮件方式被你信任的人背叛的情况。然而,与人际关系中的背叛…

07.你还在手动部署代码吗

如今的项目或者个人项目中,大家的代码怎么部署呢?公司一般都有完整的持续集成以及持续交付平台,对于小公司可能也有各自搭建了一些,比如jenkins,以及gitlab集成的gitlab-ci等等,这些都可以完成我们部署的工作甚至是测试集成等等一系列流水化工作。 但是,即使如此,我依…

软件测试-造数工具Faker简介

这里的Faker不是英雄联盟的Faker。。。 一、Python Faker 简介 Python Faker 是一个用于生成假数据的Python库。它允许开发者快速创建具有随机特征的虚构数据,这对于测试、填充数据库以及其他需要模拟真实数据的场景非常有用。Python Faker 提供了各种数据类型的生…

【经典例子】Java实现2048小游戏(附带源码)

一、游戏回顾 2048游戏是一款数字益智游戏,目标是通过合并相同数字的方块来达到2048这个目标。游戏在一个4x4的方格上进行,每个方格上都有一个数字(初始时为2或4)。玩家可以通过滑动方向键(上、下、左、右)…

这是一篇学习记录(一) — RPA

犹豫再三要不要记录一下这次的学习历程,说起RPA,可能很多人不了解,那么RPA到底是什么,它有什么用处。 机器人流程自动化 (RPA),又称为软件机器人,是一种利用智能自动化技术来模拟人类执行后台任务的方法。…

静态代码块中使用 ExecutorService 执行多线程会出现什么情况呢?

AQS系列 1、AQS核心原理 2、ReentrantLock 原理及示例 3、CountDownLatch / Semaphore 示例及使用场景 4、BlockingQueue 示例及使用场景 5、静态代码块中使用 ExecutorService 执行多线程会出现什么情况呢? 文章目录 AQS系列一、 一般场景二、static {} 场景三、原…

AD高速板常见问题和过流自锁

可以使用电机减速器来增大电机的扭矩,低速运行的步进电机更要加上减速机 减速电机就是普通电机加上了减速箱,这样便降低了转速增大了扭矩 HDMI布线要求: 如要蛇形使其等长,不要在HDMI的一端绕线。 HDMI走线时两边拉线&#xff0…

忘记 RAG:拥抱Agent设计,让 ChatGPT 更智能更贴近实际

RAG(检索增强生成)设计模式通常用于开发特定数据领域的基于实际情况的ChatGPT。 然而,重点主要是改进检索工具的效率,如嵌入式搜索、混合搜索和微调嵌入,而不是智能搜索。 这篇文章介绍了一种新的方法,灵感…

信创ARM架构QT应用开发环境搭建

Linux ARM架构QT应用开发环境搭建 前言交叉工具链Ubuntu上安装 32 位 ARM 交叉工具链Ubuntu上安装 64 位 ARM 交叉工具链 交叉编译 QT 库下载 QT 源码交叉编译 QT 源码 Qt Creator交叉编译配置配置 Qt Creator Kits创建一个测试项目 小结 前言 有没有碰到过这种情况&#xff1…

15、jenkins

15、jenkins k8s手撕yml方式部署最新版 Jenkins 2.441(jdk-21版)(jenkins-prod) mkdir -p ~/jenkins-prod-ymlkubectl create ns jenkins-prodkubectl label node k8s-node1 jenkins-prodjenkins-prodcat > ~/jenkins-prod-y…

vivado TCL运行编译

用Tcl运行合成 运行合成的Tcl命令是synth_design。通常,此命令与一起运行多个选项,例如: synth_design -part xc7k30tfbg484-2 -top my_top 在本例中,synth_design使用-part选项和-top选项运行。在Tcl控制台中,您可以…

layui

基于复杂结构的自定义模版相关介绍 我这里的接口给的格式数据 我这里搜索往返时候要显示成这样的 layui.use([table,form], function(){ var table layui.table; var form layui.form;// 渲染表格 table.render({ elem: #test-table-reload,toolbar: #toolbarDemo, …

【驱动】块设备驱动(四)-块设备驱动层

前言 块设备驱动程序是Liux块子系统中的最底层组件。它们从IO调度程序中获得请求,然后按要求处理这些请求。一个块设备驱动程序可能处理几个块设备。例如,IDE设备驱动程序可以处理几个IDE磁盘,其中的每个都是一个单独的块设备。而且&#xff…

json、jsonlines格式化显示

一、对于vscode暂时没找到合适的方法来格式化 二、利用JetBrains的IDE(例如PyCharm)来格式化(快捷键CtrlAltL) 三、利用jq工具:(速度快,推荐。) # 安装 sudo apt install jq# 使用(假设你已经有一个dev.jsonlines文件) jq . dev.…

数据库删除事务提交之后数据恢复

项目场景: 前几天的遇到的,老大让我删一条数据,不熟悉业务,我看了一下查询的sql语句,发现关联了三个表t1,t2,t3,把第三张表t3填报记录删掉了,又运行了一遍查询sql发现还能搜索到,问…

vulnhub靶场之Thales

一.环境搭建 1.靶场描述 Description : Open your eyes and change your perspective includes 2 flags:user.txt and root.txt. Telegram: machineboy141 (for any hint) This works better with VIrtualBox rathe than VMware 2.靶场地址 https://www.vulnhub.com/entry/t…

ensp实验合集(二)

实验6 VLAN划分....................................................................... - 30 - 实验7 路由器调试及常用命令使用........................................ - 42 - 实验8 配置静态路由器............................................................…

GCC编译器的使用以及使用Makefile语法进行操控

Makefile 这里使用的Makefile操控编译器 gcc 常见的组成部分 c: gcc 的一个版本,默认语言设置为 C,而且在链接的时候自动包含标准 C 库。这和 g 一样configure: GCC 源代码树根目录中的一个脚本。用于设置配置值和创建 GCC 编…

P2SH地址嵌套SegWit脚本

主要分为以下步骤: 创建SegWit脚本:首先,您需要创建一个SegWit脚本,可以是Pay-to-Witness-Public-Key-Hash(P2WPKH)或Pay-to-Witness-Script-Hash(P2WSH)脚本。这些脚本使用新的Seg…

pytest中fixture的使用方法

一、pytest中的fixture是什么 为可靠的和可重复执行的测试提供固定的基线(可以理解为测试的固定配置,使不同范围的测试都能够获得统一的配置),fixture提供了区别于传统单元测试(setup/teardown)风格的令人…