`

MySQL 触发器 索引

阅读更多

MySQL 触发器 索引

 

博文目录

  1.  触发器
  2. 索引

 

触发器是MySQL响应insert,update,delete语句时自动执行的一条SQL语句,只有表支持触发器,视图不支持。

触发器需要的信息

  • 唯一的触发器名称(一个表中唯一)
  • 触发器关联的表
  • 触发器应该响应的事件(insert?update?delete?)
  • 触发器何时执行(处理之前或处理之后)
  • 一个表的一个事件最多只能有两个触发器,所以一个表最多有6个触发器
  • 如果响应之前的触发器执行失败,响应则不会执行;响应之前的触发器或响应执行失败,响应之后的触发器不会执行


insert触发器

create trigger tr_insert_tableA 
after insert on t_tableA
for each row 
insert into t_tableB(val) 
values 
(new.val);



在insert触发器内,可引用一个名为new的虚拟表,访问被插入的行
在before insert触发器中,new中的值也可以被更新(new可以取到插入的值)
对于自动增长的列,new在insert执行之前的值为0,在执行之后是新的自动生成的值

获取刚刚插入的自动生成的主键值

create trigger t_insert_pk_tableA 
after insert on t_tableA 
for each row 
select new.id into @id;



insert into t_tableA(val) values("abc");
select @id;



delete触发器

delimiter //
create trigger t_delete_tableA 
after delete on t_tableA 
for each row 
begin 
  insert into t_tableB(val) values(old.val);
end //
delimiter ;

delete from t_tableA where id=2;



在delete触发器代码中,可以引用了一个old的虚拟表,访问被删除的行
old表中值全是只读的,不能更新

update触发器

将A表中修改后的名字都改为大写

delimiter //
create trigger t_update_tableA 
before update on t_tableA 
for each row 
begin 
  set new.val=upper(new.val);
end //
delimiter ;

update t_tableA set val='xyz' where id=1;
select * from t_tableA;



在update触发器代码中,可以引用一个名为old的虚拟表访问以前的值,引用new表访问新的值
在before update触发器中,new中值允许被更新
old表中的值是只读的,不能更改

删除触发器

drop trigger tr_insert_tableA;



索引

索引是优化数据库查询速度的重要途径

索引类型
普通索引:最基本的索引,没有唯一性之类的限制

create index valindex on t_tableA(val(20));
create index products_index on products(prod_name(25),prod_price);



唯一索引:所有的索引列只能出现一次,保持唯一性

create unique index valindex2 on t_tableB(val(20));



主键索引:主键索引是一种特殊的唯一索引,在主键建立时自动创建
全文索引:全文所以可以在varchar或text类型上创建

索引的缺点

  • 虽然索引大大提高了查询速度,但会降低更新表的速度,比如对表的insert,update,delete操作,因为更新表时,MySQL不仅仅要保存数据,还要保存索引文件
  • 建立索引会占用磁盘空间。如果在一个大表上创建了多种索引组合,索引文件会膨胀的很快。
分享到:
评论

相关推荐

    mysql索引、触发器、事务、存储过程说明

    总结来说,MySQL中的索引、触发器、事务和存储过程都是非常重要的数据库特性。正确地使用这些特性可以帮助优化数据库性能、维护数据完整性和提高应用程序的整体可靠性。在实际开发中,根据具体需求选择合适的存储...

    MySQL索引优化课件

    本课件主要聚焦于MySQL数据库的索引原理、优化策略以及相关存储过程和触发器的应用。 首先,我们要理解什么是索引。索引就像书的目录,它为数据库中的数据提供快速访问的途径。在MySQL中,常见的索引类型有B-Tree...

    MySQL触发器 Update触发Insert失败

    MySQL触发器是一种数据库对象,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。在这个场景中,开发者尝试创建一个UPDATE触发器,当`triggletest_triggle`表中的数据被更新时...

    mysql课件第四章索引、视图、触发器.ppt

    MySQL 索引、视图、触发器 MySQL 索引是 MySQL 数据库中一个非常重要的概念,它可以提高查询速度,但是也需要占用物理空间和时间维护。索引可以分为不同的类型,包括普通索引、唯一索引、全文索引、单列索引、多列...

    尚硅谷mysql高级:索引、优化

    1. 索引类型:MySQL支持多种索引类型,包括B-Tree(默认索引类型)、Hash、Full-text(全文索引)以及R-tree(空间数据索引)。B-Tree索引适用于范围查询,而Hash索引适用于等值查询,Full-text索引则专门用于文本...

    MYSQL数据库的索引、视图、触发器、游标和存储过程.pdf

    MySQL触发器可以响应表上的`INSERT`、`UPDATE`和`DELETE`等操作。创建触发器的基本语法为: ```sql CREATE [DEFINER={user|CURRENT_USER}] TRIGGER {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON table_name FOR EACH ...

    MYSQL数据库的索引、视图、触发器、游标和存储过程[收集].pdf

    【MySQL触发器(Trigger)】 触发器是数据库对象,它在特定的数据库操作(如INSERT, UPDATE, DELETE)发生时自动执行。触发器可以用于实施复杂的业务规则,数据验证或记录日志。创建触发器的语法如下: ```sql ...

    mysql高级部分--包含索引建立优化_函数_存储过程_触发器_及游标

    综上所述,MySQL中的索引、视图、触发器、游标、事务和存储过程都是高级特性,这些工具可以帮助开发人员更好地管理和操作数据库。通过对这些概念的理解和实践,可以大幅提升数据库应用的性能和可靠性。

    MySQL触发器使用详解

    MySQL触发器是数据库管理系统中的一种重要机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生之前或之后自动执行预定义的SQL语句。触发器的主要目的是确保数据的完整性和一致性,以及实现一些复杂的...

    2021年MySQL高级教程视频.rar

    09.MySQL高级索引索引分类.avi 10.MySQL高级索引索引语法.avi 11.MySQL高级索引索引设计原则.avi 12.MySQL高级视图概述.avi 13.MySQL高级视图创建及修改视图.avi 14.MySQL高级视图查看及删除视图.avi 15.MySQL高级...

    mysql使用触发器造测试数据

    总的来说,使用MySQL触发器来自动化测试数据的初始化和维护是一种高效的方法,尤其适用于临时性的测试环境。通过精心设计的触发器,可以确保在`t_account`表上的任何更改都能正确反映在相关的`A`表和`B`表中,从而...

    非常详细的某培训机构mysql学习笔记

    MySQL触发器 MySQL存储过程与函数 MySQL3 MySQL安全机制 MySQL日志管理 MySQL数据备份 备份概述 mysqldump [逻辑] mydumper [逻辑] into outfile [逻辑] xtrabackup [物理] snapshot [物理] tar打包...

    MYSQL数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程)

    MYSQL 数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程) MYSQL 数据库高级应用宝典含实例中,涵盖了索引、视图、触发器、游标和存储过程等高级应用领域。下面我们将逐一介绍这些高级应用领域的知识点...

    触发器、触发器

    - **DDL触发器**:响应数据库级别的结构改变,如创建表、更改列属性或删除索引等。 3. **触发器的工作原理**: - 当一个触发器被激活时,系统会创建两个临时表:`INSERTED`和`DELETED`。`INSERTED`表包含所有新...

    索引视图触发器PPT学习教案.pptx

    在MySQL等数据库系统中,常见的索引类型包括: 1. **普通索引**:没有特殊限制,允许出现重复值。 2. **唯一索引**:通过`unique`参数创建,确保索引列中没有重复值。 3. **全文索引**:适用于`char`, `varchar`, `...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 4_MySQL触发器课堂强化练习.mp4 │ 5_MySQL数字和时间类型.mp4 │ 6_MySQL字符串类型.mp4 │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL数据库设计工具.mp4 │ ├─新版MySQL DBA综合实战...

    mysql触发器实现oracle物化视图示例代码

    下面将详细介绍如何使用MySQL触发器来实现类似的功能。 首先,我们需要创建两个表:基表`Orders`和物化视图表`Order_mv`。`Orders`表用于存储订单信息,包括订单ID、产品名称、价格和数量。`Order_mv`表则用来存储...

Global site tag (gtag.js) - Google Analytics