MySQL - 触发器

一、概述

Mysql 允许通过触发器、存储过程、函数的形式来存储代码。

触发器可以让你在执行 Insert、Update、Delete的时候,执行一些特定的操作。可以在Mysql中指定是在Sql语句执行之前触发还是执行后触发。

 
二、使用触发器需要注意的点

对每一个表的每一个事件,最多只能定义一个触发器(换句话说,不能在AFTER INSERT上定义两个触发器)。

Mysql只支持“基于行的触发”,也就是说,触发器始终是针对一条记录的,而不是针对整个SQL语句的。所以,如果变更的数据集非常大,效率将会很低。

 
 三、使用


1、基本说明

create trigger 【触发器名称】【触发器的执行时间点】【执行的动作点】 on 【表名】for each row [函数 或者动作]

说明:

触发器执行时间:before、after

执行的动作点:insert, update, delete

函数:包在 begin、end 之间

动作:update、insert
 
2、使用
 

create triggerupdate_product_after
after update onproduct
for each row
beginupdate product set last_update_time = TIMESTAMP-- 代码区域
end;



四、说明

  由于目前大多数的 PHP 框架已经内置了事件触发的函数,所以我们项目中已经很少再用到 Mysql 本身的触发器了。并且我们也完全可以在应用程序代码中去控制,没必要在Mysql中去写事件代码了。
  
  触发器可以掩盖服务器背后的工作,一个简单的Sql语句背后,因为触发器,可能包含了很多看不见的工作。因此触发器的问题也很难排查,如果某个性能问题和触发器相关,将会很难定位和分析。

  触发器可能导致死锁和锁等待。如果触发器失败,那么原来的sql语句也会失败。如果没有意识到这其中是触发器在搞鬼,那么将很难理解服务器抛出的出错误代码是什么意思。

 

原文链接:https://www.haveyb.com/article/60

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

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

相关文章

Docker Desktop 可以直接启用Kubernetes 1.25 了

作为目前事实上的容器编排系统标准,K8s 无疑是现代云原生应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境, Docker Desktop 自带了Kubernetes 服务,但是在过往的经验中就是用梯子也安装不了&…

截取url的host_java正则表达式获取url的host示例

java正则表达式获取url的host示例 复制代码 代码如下: public static String getHost(String url){if(url==null||url.trim().equals("")){return ""; } String host = ""; Pattern p = Pattern.compile("(?<=//|)((\\w)+\\.)+\\w+&qu…

MySQL - 视图

一、概述 Mysql 5.0 版本后开始引入视图。视图本身是一个虚拟表&#xff0c;不存放任何数据。在使用 sql 语句访问视图的时候&#xff0c;他返回的数据都是在查询过程中从其他表动态生成的。 二、使用视图   1、创建视图 CREATE VIEW comic_view as SELECT comic_id,name,pe…

Linux环境下压缩与解压命令大全

tar命令 解包&#xff1a;tar zxvf FileName.tar 打包&#xff1a;tar czvf FileName.tar DirName gz命令 解压1&#xff1a;gunzip FileName.gz 解压2&#xff1a;gzip -d FileName.gz 压缩&#xff1a;gzip FileName .tar.gz 和 .tgz 解压&#xff1a;tar zxvf FileName.tar.…

Centos 磁盘管理及配额管理

实验内容&#xff1a;一.添加两块硬盘&#xff0c;使用LVM做成VG01组&#xff0c;在该VG中新建两个LV。二.将这两个LV格式化为ext4/xfs&#xff0c;开机自动挂载到系统mnt1,mnt2目录下。三.lv02开启磁盘配额功能&#xff0c;用来进行用户与组分配额的实验。四.在系统里添加用户…

OnionArch - 采用DDD+CQRS+.Net 7.0实现的洋葱架构

博主最近失业在家&#xff0c;找工作之余&#xff0c;看了一些关于洋葱&#xff08;整洁&#xff09;架构的资料和项目&#xff0c;有感而发&#xff0c;自己动手写了个洋葱架构解决方案&#xff0c;起名叫OnionArch。基于最新的.Net 7.0 RC1, 数据库采用PostgreSQL, 目前实现了…

spark写出分布式的训练算法_利用 Spark 和 scikit-learn 将你的模型训练加快 100 倍...

在 Ibotta&#xff0c;我们训练了许多机器学习模型。这些模型为我们的推荐系统、搜索引擎、定价优化引擎、数据质量等提供动力。它们在与我们的移动应用程序交互时为数百万用户做出预测。当我们使用 Spark 进行数据处理时&#xff0c;我们首选的机器学习框架是 scikit-learn。随…

理解LinkedHashMap

1. LinkedHashMap概述&#xff1a;LinkedHashMap是HashMap的一个子类&#xff0c;它保留插入的顺序&#xff0c;如果需要输出的顺序和输入时的相同&#xff0c;那么就选用LinkedHashMap。LinkedHashMap是Map接口的哈希表和链接列表实现&#xff0c;具有可预知的迭代顺序。此实现…

MySQL - 锁

一、什么是锁 锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。 二、MySQL 不同存储引擎支持的锁机制 存储引擎支持的锁类型Myisam表锁Innodb行锁、表锁Memory表锁BDB页锁、表锁表锁&#xff1a;直接锁住的是一个表&#xff0c;开销小&…

数据库时区那些事儿 - MySQL的时区处理

原文地址 当JVM时区和数据库时区不一致的时候&#xff0c;会发生什么&#xff1f;这个问题也许你从来没有注意过&#xff0c;但是当把Java程序容器化的时候&#xff0c;问题就浮现出来了&#xff0c;因为目前几乎所有的Docker Image的时区都是UTC。本文探究了MySQL及其JDBC驱动…

java_函数的重载

函数的重载&#xff08;Overload&#xff09;概念&#xff1a;在同一个类中&#xff0c;允许存在一个以上的同名函数&#xff0c;只要他们的参数个数或者参数类型不同即可。函数功能一样&#xff0c;仅仅是参与运算的未知内同不同时&#xff0c;可以定义多函数&#xff0c;却使…

全新升级的AOP框架Dora.Interception[2]: 基于约定的拦截器定义方式

Dora.Interception&#xff08;github地址&#xff0c;觉得不错不妨给一颗星&#xff09;有别于其他AOP框架的最大的一个特点就是采用针对“约定”的拦截器定义方式。如果我们为拦截器定义了一个接口或者基类&#xff0c;那么拦截方法将失去任意注册依赖服务的灵活性。除此之外…

redis watch使用场景_redis不得不会的事务玩法

我们都知道redis追求的是简单&#xff0c;快速&#xff0c;高效&#xff0c;在这种情况下也就拒绝了支持window平台&#xff0c;学sqlserver的时候&#xff0c;我们知道事务还算是个比较复杂的东西&#xff0c;所以这吊毛要是照搬到redis中去&#xff0c;理所当然redis就不是那…

加快Android Studio的编译速度

从Eclipse切换到Android Studio后&#xff0c;感觉Android Studio的build速度比Eclipse慢很多&#xff0c;以下几个方法可以提高Android Studio的编译速度使用Gradle 2.4Gradle 2.4对执行性能有很大的优化&#xff0c;但Android Studio现在默认使用的是Gradle 2.2,所以我们需要…

开发中 MySQL 规范

一、建表规范 1、数据库名、表名、字段名必须使用小写字母或数字&#xff0c;并且禁止以数字开头 示例&#xff1a;goods_category、agent_operate_201812_log 2、数据库名、表名、字段名要做到见名识意 示例&#xff1a;goods_category&#xff0c;不能 gc 3、配置表建议以 …

PaddleOCR在 Linux下的webAPI部署方案

很多小伙伴在使用OCR时都希望能采用API的方式调用&#xff0c;这样就可以跨端跨平台了。本文将介绍一种基于python的PaddleOCR识别WebAPI部署方案。喜欢的可以关注公众号&#xff0c;获取更多内容。一、 Linux环境下部署1.环境要求操作系统&#xff1a;CenterOS7&#xff1b;主…

影响程序员生涯的三个错误观念,你千万不要犯!

程序员在社会上&#xff0c;到底是怎样一个生活群体&#xff1f;是否能找到自己方向&#xff1f;其实&#xff0c;路一直都在那里&#xff0c;只是你看不到而已&#xff01; 当初的你&#xff0c;可能一直被一些技术牵着鼻子走&#xff0c;并不是自己在做着自己想做的&#xff…

心电图计算心率公式_心电图到底能反应啥问题,看过之后你也能当“医生”

只要是经历过健康体检的健康人&#xff0c;或者做过手术的患者&#xff0c;基本都做过心电图检查。都说久病成医&#xff0c;所以有些人对血、尿常规等各项检查的结果都门清儿得很&#xff0c;最起码看一眼也能说出个大概齐。偏偏心电图这种常做的检查&#xff0c;不但老病号如…

获取正在运行的服务

手机上安装的App&#xff0c;在后台运行着很多不同功能的服务&#xff0c;最常见的例如消息推送相关的服务。如何查看这些服务&#xff1f;如何判断某个服务是否正在运行&#xff1f;如何停止某一个服务呢&#xff1f;请看下面的方法&#xff1a; package com.example.servicel…

openstack的vnc启动ssl

1、制作ssl证书# cd /etc/pki/tls/certs [rootwww certs]# make vnc.key Enter pass phrase:# 输入密码 Verifying - Enter pass phrase:#确认# 从private key 中删除密码# openssl rsa -in vnc.key -out vnc.key # make vnc.csr Country Name (2 letter code) [XX]:CN# 国家 S…