MySQL---触发器详解

news2025/1/19 11:21:15

目录

一、触发器的介绍

二、触发器的语法

(1)insert触发器

(2)update触发器

(3)delete触发器


一、触发器的介绍

触发器是与表有关的数据库对象,指在insert/update/delete 之前或之后,触发并执行
触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的
完整性,日志记录,数据校验等操作。
使用别名old和new来引用触发器中发生变化的记录内容,这与其它的数据库是相似的。
现在触发器还只支持行级触发,不支持语句级触发。

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

二、触发器的语法

 语法:
   1:创建触发器语句
   create trigger 触发器名称 before/after  insert/update/delete on 表名 for each row
    begin
      sql语句
    end;

   这里的after和before表示的是增删改之后还是之前触发的

   2:查看触发器语句
     show triggers;

   3:删除触发器
     drop trigger 数据库名.触发器的名字;(如果没有指定数据库的名字,那么默认是当前数据库)

(1)insert触发器

create table user_logs(
    opera_text varchar(1000) comment '插入的·内容',
    opera_time datetime comment '插入的时间',
    opera varchar(20) comment '操作的类型,insert/delete/update'
 );

create trigger tb_user_insert_tigger
    after insert on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera)
        values(concat('插入的名字=',new.name,',插入的年龄=',new.age),now(),'insert');
    end;

show triggers;
insert into sp(age, name) values (100,'大魔王');

(2)update触发器

create trigger tb_user_update_trigger
    after update on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera) values
        (concat('更新前的名字=',old.name,' 更新前的年龄=',old.age,' 更新后的名字=',new.name,' 更新后的年龄=',new.age),now(),'update');
    end;
show triggers;
update sp set age=1000 where name='李四';

(3)delete触发器

create trigger tb_user_delete_trigger
    after delete on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera)
            values(concat('删除的名字=',old.name,' 删除前的年龄=',old.age),now(),'delete');
    end;
show triggers;
delete from sp where name='李四';

 

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

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

相关文章

4-UI自动化-selenium三大等待操作

4-UI自动化-selenium三大等待方式selenium三大等待方式强制等待timd.sleep隐式等待implicitly_wait显式等待WebDriverWait显式等待和隐式等待的区别上篇介绍了3-UI自动化-八大元素定位,xpath定位方式和相关的常问面试题 本篇来学习三大等待方式 ♡\color{red}{\hear…

如何用蓝牙实现无线定位(一)--系统原理

1. 简介 本项目将利用多个BLE4.0蓝牙模块,配合主控板、OLED显示屏等,构建一个无线定位系统。 本项目的系统构成为:3个信号塔,1个中控台,2个被定位的目标。 无线定位的用途有很多。比如,我们可以把固定的目…

zabbix拓扑图和聚合图形

目录 一、环境准备 1、搭建zabbix基础环境 2、创建被监控主机 二、拓扑图 1、拓扑图作用 2、拓扑图绘制步骤 三、聚合图形 1、聚合图形的作用 2、创建聚合图形 一、环境准备 1、搭建zabbix基础环境 zabbix基础环境部署参照:zabbix基础环境部署_桂安俊kyli…

方格取数 (两条路径,使得取得的数字和为最大)

设有 NN 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示: 某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。 在走过的路上&#xff0…

Vue中的组件生命周期

一个组件从创建到销毁的过程 成为生命周期。 在我们使用Vue3 组合式API 是没有 beforeCreate 和 created 这两个生命周期的 组件生命周期如下: onBeforeMount() 在组件DOM实际渲染安装之前调用。在这一步中,根元素还不存在。onMounted() 在组件的第一次…

【手把手】教你玩转SpringCloud Alibaba之Sentinel整合GateWay

1、网关流控介绍 在微服务系统中,网关提供了微服务系统的统一入口,所以在做限流的时候,肯定是要在网关层面做一个流量的控制,Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入…

R语言隐马尔可夫模型HMM识别不断变化的市场条件

了解不同的市场状况如何影响您的策略表现可能会对您的收益产生巨大的影响。最近我们被客户要求撰写关于隐马尔可夫模型的研究报告,包括一些图形和统计输出。 某些策略在波动剧烈的市场中表现良好,而其他策略则需要强劲而平稳的趋势,否则将面…

【PdgCntEditor】解决PDF的目录页码和PDF实际页码不一致的问题,书签页码偏移页面偏移功能,PDF页面标签的添加

一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码,两者之间存在一定的偏移值;导致我们看目录后面的页码,并不能直接借此数字索引到对应页面,非常麻烦。 二、改变页码标签 这是第一种方法&…

电脑技巧:Win10粘贴文件到C盘提示没有权限的解决方法

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

VMware升级手册

1. 概述 1.1 实施范围 本次实施涉及上海SMVIC虚拟化平台的7台物理服务器、7台ESXI节点、一台VC(6.7升级到7.0),以及广德、如皋两个集群迁移到7.0VC。 1.2 实施内容 本项目中需要实施内容包括: 2. 前置准备 升级确认: 3. WBS 4. 实施过程 4.1 VC部署 运行安装包,点击…

R语言生存分析数据分析可视化案例

目标 本文的目的是对如何在R中进行生存分析进行简短而全面的评估。关于该主题的文献很广泛,仅涉及有限数量的(常见)问题。最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出。 可用的R包数量反映了对该主题的…

SpringBoot 配置文件这样加密,才足够安全!

1. 前景 在使用Springboot时,通常很多信息都是在application.yml中直接明文配置的,比如数据库链接信息,redis链接信息等等。但是这样是不安全的。 所以需要对敏感数据进行加密,这样防止密码泄露 Jasypt这个库为我们解决了这个问…

[附源码]计算机毕业设计springboot-大学生健康档案管理

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

初识Pytest自动化测试框架,我彻底懂了

初识Pytest Pytest是Python实现的一个测试工具,可以用于所有类型和级别的软件测试。 Pytest是一个可以自动查找到你编写的用例并运行后输出结果的测试框架。 Pytest的特点: 是一个命令行工具,编写用例简单,可读性强非常容易上手…

2023年高企申报准备工作,明光市企业可以提前做这些准备

为了帮助企业提前准备和更好地开展2023年高新技术企业认定申报工作,安徽省大力鼓励企业申报高新技术企业,相应出台了相关政策,同时对于高企申报也有很多奖补,下面小编汇总了滁州市2023年申报,企业提前准备工作有哪些。…

黑群晖从入门到入土,自编译适合自己硬件的黑群晖7.1.x引导(黑群晖DSM7.X引导用arpl编译教程)

写在前面的话 没啥好说的,只需要感谢在GitHub上开源代码的巴西老哥就好,好了废话不多说直接开始。 黑群晖DSM7.X引导用arpl编译教程写在前面的话一、需要的软硬件清单二、制作引导盘1、下载arpl镜像2.1.1、制作PE启动盘,这是使用msata硬盘或…

3. Vue.js 3.0 响应式系统原理

1.响应式系统原理-介绍 接下来通过模拟Vue3的响应式系统来深入了解它内部的工作原理。先来回顾一下Vue3重写了响应式系统,和Vue2相比,Vue3的响应式系统底层采用proxy对象实现,在初始化的时候不需要遍历所有的属性,把属性通过defi…

C语言——结构体(入门)

文章目录1.结构体的声明1.1.结构体是什么?1.2.结构体的声明1.3.结构体的定义和初始化2.结构体成员的访问3.结构体传参1.结构体的声明 1.1.结构体是什么? 在生活中往往很难用一个准确的数据类型来描述一个物体,例如一本书,描述它…

编码技巧——Mybatis分页插件PageHelper使用

本篇介绍Mybatis分页插件PageHelper的使用,本质上是Mybatis拦截器起作用,在执行目标SQL之前添加count语句及拼接limit到目标SQL后面,这里不再赘述,Mybatis拦截器相关知识可参考Mybatis——拦截器Interceptor,本篇仅简单…

12_AJAX

知识点1【定时器】(重要) 知识点2【日期Date对象】 知识点3【Math数学对象】(了解) ​编辑 知识点4【string对象】 indexof函数: substring()函数: 知识点5【全局函数】(了解) …