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

mysql--触发器复习

,而每张表中对应的行有两种状态:数据操作前和操作后 before:表中数据发生改变前的状态 after:表中数据发生改变后的状态 PS:如果 before 触发器失败或者语句本身失败,将不执行 after...触发器(如果有的话) ---- 注意事项 在 MySQL 5 中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一,即同一数据库中的两个表可能具有相同名字的触发器 每个表的每个事件每次只允许一个触发器...表中插入数据时,触发事件,向depart表中插入一条记录 CREATE TRIGGER pay_log AFTER INSERT ON payment FOR EACH ROW #触发器执行的逻辑 BEGIN...---- 3.删除触发器 基本语法:drop trigger 触发器名字 ---- 触发器应用 触发器针对的是数据库中的每一行记录,每行数据在操作前后都会有一个对应的状态,触发器将没有操作之前的状态保存到...old 关键字中,将操作后的状态保存到 new 中 语法:old/new.字段名 需要注意的是,old 和 new 不是所有触发器都有 delimiter ## -- 创建触发器 create trigger

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

    mysql学习总结06 — SQL编程

    mysql中许多属性控制都是通过mysql中的变量来实现的 := : mysql中没有比较符号==,用=作为比较符号,容易与赋值符号混淆,因此增加变量赋值符号 := 2.1 系统变量 系统变量针对所有用户...'; mysql允许将数据从表中取出存储到变量中,mysql没有数组,查询的数据只能是一行数据(一个变量对应一个字段值) 基本语法: -- 赋值且查看赋值过程 select @1> := 1...after_insert_order\G 触发触发器 此处执行订单表插入操作即可 删除触发器 mysql> drop trigger after_insert_order; 6.4 记录关键字new,...old 触发器在执行前将没有操作的状态(数据)保存到old关键字中,而操作后的状态保存到new关键字中。...可以通过old和new来获取绑定表中对应的记录数据。old和new并不是所有触发器都有:insert前没有old,delete后没有new 基本语法: .

    2.7K40

    mysql学习总结06 — SQL编程

    mysql中许多属性控制都是通过mysql中的变量来实现的 := : mysql中没有比较符号==,用=作为比较符号,容易与赋值符号混淆,因此增加变量赋值符号 := 2.1 系统变量 系统变量针对所有用户...'; mysql允许将数据从表中取出存储到变量中,mysql没有数组,查询的数据只能是一行数据(一个变量对应一个字段值) 基本语法: – 赋值且查看赋值过程 select @1> := <字段...\G 触发触发器 此处执行订单表插入操作即可 删除触发器 mysql> drop trigger after_insert_order; 6.4 记录关键字new,old 触发器在执行前将没有操作的状态...(数据)保存到old关键字中,而操作后的状态保存到new关键字中。...old和new并不是所有触发器都有:insert前没有old,delete后没有new 基本语法: mysql> delimiter $$ mysql> create trigger after_insert_order_trigger

    1.3K30

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

    一、什么是触发器 触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作...执行结果发现,我们在使用函数将employee表中id为2员工的phone修改为110后,触发器监视到employee表中发生了update更新操作,就执行了内部SQL语句,也就是将tb_class表中...id为1的num值自增1。...update更新以前该行的值更新后的值delete删除以前该行的值所有字段都为空 7.2 old和new对象应用 关于old和new对象的应用,我在这里没有展开演示。...// 声明回结束符 delimiter ; 删除Jion学生记录 执行结果为Join记录在数据库的表中消失了,而大班的学生数量也减掉了1。

    1.4K10

    如何追踪每一笔记录的来龙去脉:一个完整的Audit Logging解决方案

    引起T_AUDIT_LOG_DETAIL表中的数据的急剧上升:由于对于需要进行Audit Logging的每个Table,它的每个记录的操作都会在T_AUDIT_LOG_DETAIL增加一条记录,如果这样...Table,或者对这样的Table的操作过于频繁,将会造成该表中的记录急剧上升,近而影响整个应用的性能。...然后我们把基于商业逻辑的更新和添加的Log数据向Db提交,所有的这些操作被纳入到一个单独Transaction中。...当这些更新通过最终调用SQL或者Stored procedure更新到Db中后,对应的Trigger被触发,基于某个Table的数据改变的信息被添加到T_AUDIT_LOG_DETAIL中。 C....这就要借助要的NEED_AUDIT 这个字段了。这个字段的默认值为1(true),在Delete之前我们不但修改TRANSACTION_NO,我们还将NEED_AUDIT 字段赋为0。

    1.6K100

    学习SQLite之路(三)

    DEFAULT 约束:当某列没有指定值时,为该列提供默认值。 UNIQUE 约束:确保某列中的所有值是不同的。 PRIMARY Key 约束:唯一标识数据库表中的各行/记录。...CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件 (2)primary key约束:  PRIMARY KEY 约束唯一标识数据库表中的每个记录。   ...在 SQLite 中,主键可以是 NULL,这是与其他数据库不同的地方。   主键是表中的一个字段,唯一标识数据库表中的各行/记录。主键必须包含唯一值。主键列不能有 NULL 值。   ...要修改的表必须存在于同一数据库中,作为触发器被附加的表或视图,且必须只使用 tablename,而不是database.tablename。...唯一索引不允许任何重复的值插入到表中。

    3K70

    MySQL进阶笔记-01

    左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。...2.3 索引结构 索引是在MySQL的存储引擎层中实现的,而不是在服务器层实现的。所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型的。...2.4 索引分类 1) 单值索引 :即一个索引只包含单个列,一个表可以有多个单列索引 2) 唯一索引 :索引列的值必须唯一,但允许有空值 3) 复合索引 :即一个索引包含多个列 2.5 索引语法 索引在创建表的时候...LOCAL : 只要满足本视图的条件就可以更新。 CASCADED : 必须满足所有针对该视图的所有视图的条件才可以更新。 默认值...., 完成删除数据时的日志记录 : DELIMITER $ create trigger emp_logs_delete_trigger after delete on emp for each

    1.2K10

    MySQL系列专题(2)-MySQL的SQL语句和高级特性

    单列最大值 #统计所有员工中月薪最高的工资 SELECT MAX(salary) FROM t_employees; 2.7.4 单列最小值 #统计所有员工中月薪最低的工资 SELECT MIN(salary...同no action, 都是立即检查外键约束 Set null 在主表上update/delete记录时,将子表上匹配记录的列设为null 注: trigger不会受外键cascade行为的影响,即不会触发...更新从表,主表不变 3.3.2 Trigger 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。...FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器 CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW BEGIN...+ unique,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

    3.7K10

    SQL 语法速成手册

    列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。 行(row) - 表中的一个记录。 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。...name FROM account; 更新数据 UPDATE 语句用于更新表中的记录。...内连接 vs 自然连接 内连接提供连接的列,而自然连接自动连接所有同名列。 外连接返回一个表中的所有行,并且仅返回来自次表中满足连接条件的那些行,即两个表中的列是相等的。...唯一索引 唯一索引表明此索引的每一个索引值只对应唯一的数据记录。...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

    16.9K20

    SQL 语法速成手册

    列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。 行(row) - 表中的一个记录。 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。...name FROM account; 更新数据 UPDATE 语句用于更新表中的记录。...内连接 vs 自然连接 内连接提供连接的列,而自然连接自动连接所有同名列。 外连接返回一个表中的所有行,并且仅返回来自次表中满足连接条件的那些行,即两个表中的列是相等的。...唯一索引 唯一索引表明此索引的每一个索引值只对应唯一的数据记录。...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

    17.2K40

    MySQL进阶知识(最全)(精美版)

    ⾏ ; OLD 中的值全都是只读的,不能更新。...在 AFTER DELETE 的触发器中⽆法获取 OLD 虚拟表 在 UPDATE 触发器代码中 可以引⽤⼀个名为OLD 的 虚拟表 访问更新以前的值 可以引⽤⼀个名为NEW 的虚拟表...访问新 更新的值; MySQL中的视图 什么是视图?...视图本身不包含数据,因此它们返回的数据是从其他表中检索出来的。 在添加或更改这些表中的数据时,视图将返回改变过的数据。 视图的作⽤ 1....因为中间节点不保存数据,所以每一次的查找都会命中到叶子节点,而叶子节点是处在同一层的,因此查询的性能更加的稳定. 所有的叶子节点按顺序链接成了链表,因此可以方便的话进行范围查询. ? ?

    2.6K21

    SQL语法速成手册,建议收藏!

    列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。 行(row) - 表中的一个记录。 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。...name FROM account; 更新数据 UPDATE 语句用于更新表中的记录。...内连接 vs 自然连接 内连接提供连接的列,而自然连接自动连接所有同名列。 外连接返回一个表中的所有行,并且仅返回来自次表中满足连接条件的那些行,即两个表中的列是相等的。...唯一索引 唯一索引表明此索引的每一个索引值只对应唯一的数据记录。...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

    8.1K30

    MySQL数据库基础知识_Mysql教程

    一、数据库基础知识 在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库 第二范式定义:若关系模式 R∈1NF R\in1NF,且关系模式R的每个非主属性完全函数依赖于码...专门的关系运算:选择、投影、连接、除 索引是一个单独的、存储在磁盘上的数据库结构,它们包含对数据表里所有记录的引用指针。...MYSQL版本更新 数据库管理系统的变更 将www.abs.com主机上的mysql数据库全部迁移到www.bcd.com主机上。...二进制日志:记录所有更改数据的语句,可以用于数据复制。 . 慢查询日志:记录所有执行时间超过long_query_time的所有的查询或不使用索引的查询。...二、数据库操作 设置表的属性值自动增加 id INT(11) PRIMARY KEY AUTO_INCREMENT 使用默认约束 Id INT(11) DEFAULT 1111 //默认为

    78330
    领券