MySQL 触发器 索引
博文目录
触发器是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中,常见的索引类型有B-Tree...
MySQL触发器是一种数据库对象,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。在这个场景中,开发者尝试创建一个UPDATE触发器,当`triggletest_triggle`表中的数据被更新时...
MySQL 索引、视图、触发器 MySQL 索引是 MySQL 数据库中一个非常重要的概念,它可以提高查询速度,但是也需要占用物理空间和时间维护。索引可以分为不同的类型,包括普通索引、唯一索引、全文索引、单列索引、多列...
1. 索引类型:MySQL支持多种索引类型,包括B-Tree(默认索引类型)、Hash、Full-text(全文索引)以及R-tree(空间数据索引)。B-Tree索引适用于范围查询,而Hash索引适用于等值查询,Full-text索引则专门用于文本...
MySQL触发器可以响应表上的`INSERT`、`UPDATE`和`DELETE`等操作。创建触发器的基本语法为: ```sql CREATE [DEFINER={user|CURRENT_USER}] TRIGGER {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON table_name FOR EACH ...
【MySQL触发器(Trigger)】 触发器是数据库对象,它在特定的数据库操作(如INSERT, UPDATE, DELETE)发生时自动执行。触发器可以用于实施复杂的业务规则,数据验证或记录日志。创建触发器的语法如下: ```sql ...
综上所述,MySQL中的索引、视图、触发器、游标、事务和存储过程都是高级特性,这些工具可以帮助开发人员更好地管理和操作数据库。通过对这些概念的理解和实践,可以大幅提升数据库应用的性能和可靠性。
MySQL触发器是数据库管理系统中的一种重要机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生之前或之后自动执行预定义的SQL语句。触发器的主要目的是确保数据的完整性和一致性,以及实现一些复杂的...
09.MySQL高级索引索引分类.avi 10.MySQL高级索引索引语法.avi 11.MySQL高级索引索引设计原则.avi 12.MySQL高级视图概述.avi 13.MySQL高级视图创建及修改视图.avi 14.MySQL高级视图查看及删除视图.avi 15.MySQL高级...
总的来说,使用MySQL触发器来自动化测试数据的初始化和维护是一种高效的方法,尤其适用于临时性的测试环境。通过精心设计的触发器,可以确保在`t_account`表上的任何更改都能正确反映在相关的`A`表和`B`表中,从而...
MySQL触发器 MySQL存储过程与函数 MySQL3 MySQL安全机制 MySQL日志管理 MySQL数据备份 备份概述 mysqldump [逻辑] mydumper [逻辑] into outfile [逻辑] xtrabackup [物理] snapshot [物理] tar打包...
MYSQL 数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程) MYSQL 数据库高级应用宝典含实例中,涵盖了索引、视图、触发器、游标和存储过程等高级应用领域。下面我们将逐一介绍这些高级应用领域的知识点...
- **DDL触发器**:响应数据库级别的结构改变,如创建表、更改列属性或删除索引等。 3. **触发器的工作原理**: - 当一个触发器被激活时,系统会创建两个临时表:`INSERTED`和`DELETED`。`INSERTED`表包含所有新...
在MySQL等数据库系统中,常见的索引类型包括: 1. **普通索引**:没有特殊限制,允许出现重复值。 2. **唯一索引**:通过`unique`参数创建,确保索引列中没有重复值。 3. **全文索引**:适用于`char`, `varchar`, `...
│ 4_MySQL触发器课堂强化练习.mp4 │ 5_MySQL数字和时间类型.mp4 │ 6_MySQL字符串类型.mp4 │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL数据库设计工具.mp4 │ ├─新版MySQL DBA综合实战...
下面将详细介绍如何使用MySQL触发器来实现类似的功能。 首先,我们需要创建两个表:基表`Orders`和物化视图表`Order_mv`。`Orders`表用于存储订单信息,包括订单ID、产品名称、价格和数量。`Order_mv`表则用来存储...