首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL(十一)之触发器

上一篇介绍的是比较简单的视图,其实用起来是相对比较简单的,以后有什么更多的关于视图的用法,到时候在自己补充。接下来让我们一起了解一下触发器的使用!...在MySQL Server里面也就是对某一个表的一定的操作,触发某种条件(Insert,Update,Delete 等),从而自动执行的一段程序。   ...MySQL在触发DELETE/UPDATE/INSERT语句时就会自动执行所设置的操作,其他SQL语句则不会激活触发器。...{ INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。   ...ON 表名称>  --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。

2K80

MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目

ON --- 触发器是属于某一个表的: 当在这个表上执行 INSERT|UPDATE|DELETE 操作的时候就导致触发器的激活....,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据;   ② 在UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;   ③ 在...首先它是一个插入Insert触发器,是建立在表student上的; 然后是after,插入后的事件; 事件内容是插入成绩表,需要插入学生的学号和姓名,number为自增,而“分值、排名”目前不需要。...首先它是一个插入delete触发器,是建立在表student上的; 然后是after,插入后的事件; 事件内容是关联删除成绩表数据,需要删除学生的学号即可。...一般情况下,Web应用的瓶颈常在DB上,所以会尽可能的减少DB做的事情,把耗时的服务做成Scale Out,这种情况下,肯定不会使用存储过程;而如果只是一般的应用,DB没有性能上的问题,在适当的场景下,

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql触发另一个表新增或者删除

    MySQL 触发器简单实例 语法总结: CREATE TRIGGER 触发器名称> --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象....{ BEFORE | AFTER } --触发器有执行的时间设置:可以设置为事件发生前或后。...{ INSERT | UPDATE | DELETE } --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。...ON 表名称> --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。...new.col_name在更新它之后引用将要插入的新行的1列或已有行的1列, 所以要引用update前的列就用old,要引用update后的列就用new。

    12610

    MySQLMariaDB触发器详解

    }     ON tbl_name FOR EACH ROW     trigger_body 触发器只能建立在永久表上,不能建立在视图和临时表上。...在MySQL中,一张表只能有一个同时间、同事件的触发器,所以MySQL中不支持基于列的触发器。...且无论是before还是after insert触发器都有new表的存在。 在mariadb 10.2.3版本之后,一个表中可以为同一时间、同一事件创建多个触发器(在mysql中不允许)。...5.通过on duplicate key update分析触发器触发原理 在MySQL/MariaDB中,如果向表中插入的数据有重复冲突检测时会阻止插入。...在insert into... on duplicate key update语句中,插入没有重复值冲突的记录时,首先判断是否存在before insert触发器,有就触发,触发之后检查约束,发现没有重复值冲突

    1.8K20

    mysql 触发器介绍「建议收藏」

    本教程带领大家在实践中学习,你将学到触发器在实际应用场景中的重要应用。 在这个教程中客户管理系统。...这三类操作都可以使用 MySQL 触发器来实现。 下面将详细讲解触发器全部六种情况: BEFORE INSERT : 在插入数据前,检测插入数据是否符合业务逻辑,如不符合返回错误信息。...AFTER INSERT : 在表 A 创建新账户后,将创建成功信息自动写入表 B 中。 BEFORE UPDATE :在更新数据前,检测更新数据是否符合业务逻辑,如不符合返回错误信息。...服务器上配置好 MySQL Server MySQL root 账号 创建示例数据库 我们先创建一个干净的示例数据库,方便大家可以跟随本教程一起实践。...[表名]:将这个触发器与数据库中的表进行关联,触发器定义在表上,也附着在表上,如果这个表被删除了,那么这个触发器也随之被删除。

    73320

    mysql 触发器介绍

    本教程带领大家在实践中学习,你将学到触发器在实际应用场景中的重要应用。 在这个教程中客户管理系统。...这三类操作都可以使用 MySQL 触发器来实现。 下面将详细讲解触发器全部六种情况: BEFORE INSERT : 在插入数据前,检测插入数据是否符合业务逻辑,如不符合返回错误信息。...AFTER INSERT : 在表 A 创建新账户后,将创建成功信息自动写入表 B 中。 BEFORE UPDATE :在更新数据前,检测更新数据是否符合业务逻辑,如不符合返回错误信息。...服务器上配置好 MySQL Server MySQL root 账号 创建示例数据库 我们先创建一个干净的示例数据库,方便大家可以跟随本教程一起实践。...[表名]:将这个触发器与数据库中的表进行关联,触发器定义在表上,也附着在表上,如果这个表被删除了,那么这个触发器也随之被删除。

    5.4K10

    Mysql数据库-触发器

    触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。 3. 使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。...根据触发机制的不同: insert/update/delete 4.1.1 触发器解释 1595944780499 在上面的对于 account 表的 增删改操作中,我们可以使用触发器对其操作进行记录...trigger 触发器名称 before/after -- 在...之前/在...之后 insert/update/delete -- 触发事件 on 表名 -- 监听的表 for each row...该关键字用来声明SQL语句的结束符,用来告诉 MySQL 解释器,该段命令是否已经结束了,mysql是否可以执行了。 2....-- 创建触发器 account_update after update -- 在 update 操作之后触发 on account -- 监听 account 表 for each row -- 行级触发器

    91920

    MySQL触发器的详细教学与实战分析

    before/after: 触发器是在增删改之前执行,还是之后执行 delete/insert/update: 触发器由哪些行为触发(增、删、改) on 表名: 触发器监视哪张表的(增、删、改)操作...5触发SQL代码块;6END; 注意: 触发器也是存储过程程序的一种,而触发器内部的执行SQL语句是可以多行操作的,所以在MySQL的存储过程程序中,要定义结束符。...在oracle中,for each row如果不写,无论update语句一次影响了多少行,都只执行一次触发事件。 而MySQL中,不支持语句级触发器,所以在MySQL中并不需要在意。...触发器应用: 关于订单表,下订单肯定是涉及到insert插入数据数量的操作。我们可以创建一个监视订单表insert操作后执行库存表数量-1的触发器来完成订单与库存表的同时修改。...,如果在触发事件中需要用到这个旧行的变量,可以用old关键字表示 在触发目标上执行update操作后原纪录是旧行,新记录是新行,可以使用new和old关键字来分别操作 触发语句oldnewinsert所有字段都为空将要插入的数据

    1.4K10

    MySQL从删库到跑路_高级(五)——触发器

    在INSERT型触发器中,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据; 在UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;...三、触发器应用 1、实现业务逻辑 客户下订单订购商品,商品表自动减少数量。 在商品表创建删除触发器,删除某商品,自动删除该商品的订单。...在订单表上创建触发器,当有订单,会根据订单的产品编号和数量自动减少产品的数量。触发器中NEW代表一个表,存放插入的订单记录。...操作由订单表的Insert触发器完成。 ? 在订单表上创建新的触发器,当订单定的某产品产品数量大于产品库存,禁止下订单,也就是禁止在订单表中插入记录。...触发器设置成before update,在更改前检查价格增长幅度是否超过20%,如果超过就产生错误,取消操作。 更新操作分为两步,第一步是删除原来的记录,第二步是插入新记录。

    1.4K20

    MySQL中触发器的使用

    触发器: 触发器的使用场景以及相应版本: 触发器可以使用的MySQL版本: 版本:MySQL5以上 使用场景例子: 每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写 每当订购一个产品时...在这里我们使用的after;也就是在插入结束后触发条件; DECLARE msg VARCHAR(100); 注意:declare语句是在复合语句中声明变量的指令;如果不声明msg,执行语句时,MySQL...可以引用一个名为NEW的虚拟表,访问被插入的行; 在before insert触发器中,NEW中的值也可以被更新(允许更改被插入的值) 对于AUTO_INCREMENT列,NEW在insert执行之前包含...例二: 在COURSE表上创建触发器,检查插入时是否出现课程名相同的记录,若有则不操作。...触发器: 在update触发器的代码中,可以引用一个名为OLD的虚拟表访问以前的值,即:update未执行前的值,还可以引用一个名为NEW的虚拟表访问新更新的值; 在before update触发器中,

    3.3K10

    mysql--触发器复习

    3.删除触发器 触发器应用 错误情况 同时,如果在触发器中出现错误,那么前面的已经执行的操作也会全部清空 注意事项 ① mysql触发器不能对同一张表进行修改操作 因此说明:MySQL 的触发器中不能对本表进行...触发器(如果有的话) ---- 注意事项 在 MySQL 5 中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一,即同一数据库中的两个表可能具有相同名字的触发器 每个表的每个事件每次只允许一个触发器...0,在 insert 执行之后包括新的自动生成的值 这里我们可以根据新插入的 orders 表中的数据来修改 goods 表的库存,此时新插入的数据用 new 来表示 如果买 5 个 id 为...insert after 这个触发器了 同时,如果在触发器中出现错误,那么前面的已经执行的操作也会全部清空 ---- 注意事项 ① mysql触发器不能对同一张表进行修改操作 假如我在 before...之后,我又尝试在触发器中进行 insert 和 delete 操作,之后更新的时候还是报同样的错误 因此说明:MySQL 的触发器中不能对本表进行 insert、update 和 delete 操作,否则会报错

    2.5K10

    深入理解MySQL触发器

    似乎在《高性能MySQL》中,对触发器作了一定的描述,也提到使用中的一些优势和局限性,但感觉还是不能完全理解触发器的全部功能和实现。...因为触发器在单表的命名空间内,所以同一个表的触发器名称需要不同。不同表可以有相同的触发器名称。 3....(1)插入数据: 当用户添加一个订单的时候,我们需要对商品表格中的库存(storage)进行相应的改动 mysql> create trigger shop_goods -> after insert...所有触发器信息都存储在information_schema数据库下的triggers表中,可以使用SELECT语句查询。如果有很多个触发器,最好通过TRIGGER_NAME字段指定查询某一个触发器。...)非常重要,在电商的限购数额中也会有应用。

    79010

    MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项

    MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项 第17篇_触发器 在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息 和 库存信息...当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。 2....BEFORE|AFTER :表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发。 INSERT|UPDATE|DELETE :表示触发的事件。...的触发器,向test_trigger数据表插入数据之后,向test_trigger_log数据表中插入after_insert的日志信息。...但是,人为操作很容易犯错误,比如说在录入数量的时候,把条形码扫进去了;录入金额的时候,看串了行,录入的价格远超售价,导致账面上的巨亏…… 这些都可以通过触发器,在实际插入或者更新操作之前,对相应的数据进行检查

    46111

    第17章_触发器

    当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。 # 2....触发器的创建 # 2.1 创建触发器语法 创建触发器的语法结构是: CREATE TRIGGER 触发器名称 {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名...BEFORE|AFTER :表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发。 INSERT|UPDATE|DELETE :表示触发的事件。...的触发器,向 test_trigger 数据表插入数据之后,向 test_trigger_log 数据表中插入 after_insert 的日志信息。...但是,人为操作很容易犯错误,比如说在录入数量的时候,把条形码扫进去了;录入金额的时候,看串了行,录入的价格远超售价,导致账面上的巨亏…… 这些都可以通过触发器,在实际插入或者更新操作之前,对相应的数据进行检查

    24020

    【重学 MySQL】八十六、如何高效创建触发器

    【重学 MySQL】八十六、如何高效创建触发器 在 MySQL 中触发器(Trigger)是数据库中的一种特殊对象,它会在指定的表上执行特定的数据修改操作(如INSERT、UPDATE...触发器的基本概念 触发事件:触发触发器的事件,通常是INSERT、UPDATE或DELETE操作。 触发时机:触发器可以在触发事件之前(BEFORE)或之后(AFTER)执行。...例如,BEFORE INSERT触发器会在数据插入到表中之前执行,而AFTER UPDATE触发器则会在数据更新到表中之后执行。 触发条件:在某些情况下,触发器可能还包含特定的触发条件。...复杂业务逻辑:在某些情况下,触发器可以用于实现复杂的业务逻辑,尽管这通常不是最佳实践(因为复杂的业务逻辑最好通过应用程序代码来实现)。...,触发器 after_employee_insert 就会在 employee_logs 表中插入一条日志记录。

    12810

    深入浅出解析——MYSQL|触发器

    触发器具有MySQL语句在需要时才被执行的特点,即某条(或某些)MySQL语句在特定事件发生时自动执行,本文主要介绍一下MYSQL中六种触发器的案例。...触发器具有MySQL语句在需要时才被执行的特点,即某条(或某些)MySQL语句在特定事件发生时自动执行。例如: ●每当增加一个客户到数据库的客户基本信息表时,都检查其电话号码的格式是否正确。...2.触发器的类型 ● INSERT触发器 INSERT触发器可在INSERT语句执行之前或者之后执行,在INSERT触发器内可引用一个名为NEW的虚拟表来访问被插入的行,NEW的值可以被更新 ● DELETE...触发器 DELETE触发器可在DELETE语句执行之前或者之后执行,在DELETE触发器内可引用一个名为OLD的虚拟表来访问被删除的行,OLD的值不可以被更新,全部是只读的 ● UPDATE触发器...UPDATE触发器可在UPDATE语句执行之前或者之后执行,在UPDATE触发器内可引用一个名为NEW的虚拟表来访问被更新的行,也可以引用一个名为OLD的虚拟表来访问更新之前的行,OLD的值全部只读,NEW

    63820

    MySql基础之触发器

    1、触发器概述 MySQL从 5.0.2 版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。...当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。...2、触发器的创建 创建触发器语法 CREATE TRIGGER 触发器名称 {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 FOR EACH ROW 触发器执行的语句块...BEFORE|AFTER :表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发。 INSERT|UPDATE|DELETE :表示触发的事件。...“salary_check_trigger”,基于员工表“employees”的INSERT事件,在INSERT之前检查将要添加的新员工薪资是否大于他领导的薪资,如果大于领导薪资,则报sqlstate_value

    10310

    mysql触发器的作用及语法 转

    触发器是一种特殊的存储过程,它在插入,删除或改动特定表中的数据时触发运行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。 数据库触发器有下面的作用: 1.安全性。...# 触发器可以拒绝或回退那些破坏相关完整性的变化,取消试图进行数据更新的事务。当插入一个与其主健不匹配的外部键时,这样的触发器会起作用。...比如,可以在books.author_code 列上生成一个插入触发器,假设新值与auths.author_code列中的某值不匹配时,插入被回退。 5.同步实时地复制表中的数据。...触发程序,详细情况取决于行上是否有反复键。...㈢使用触发程序 在本节中,介绍了在MySQL 5.1中使用触发程序的方法,并介绍了在使用触发程序方面的限制。 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。

    3.5K10

    MySQL的学习--触发器

    触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。...:标识触发事件,取值为 INSERT、UPDATE 或 DELETE; tbl_name:标识建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句,或者用...由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。...另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。...具体地: 在 INSERT 型触发器中,NEW 用来表示将要(BEFORE)或已经(AFTER)插入的新数据; 在 UPDATE 型触发器中,OLD 用来表示将要或已经被修改的原数据,NEW 用来表示将要或已经修改为的新数据

    4.8K20
    领券