- 什么是事务?
- 事务处理是用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行 。事务处理是一种机制,用来管理必须成批执行的MySQL操作,它们要么时作为整体执行或者完全不执行 。
- 关键概念:
- 事务:是指一组SQL语句;
- 回退:是指撤销指定的SQL语句的过程;
- 提交:指将未存储的SQL语句的结果写入数据库表中;
- 保留点:指事务处理中设置的临时占位符,可以对它发布回退;
- 如何创建执行事务?
- 执行结果为:插入数据('1',5,18)有效,因为,只会从保留点SAFEPOINT之后开始回退,也就是说保留点SAFEPOINT之前的SQL语句执行的结果仍然有效 。
- 有这样一些细节:
- STAET TRANSACTION用来表示下面的SQL语句集为一段事务;
- SAFEPOINT 用于指定保留点insertinto;
- ROLLBACK TO表示从指定保留点开始回退,也就是说保留点之前的SQL语句执行结果依然有效 。如果仅仅使用ROLLBACK进行回退的话就表示从STAET TRANSACTION之后所有的SQL语句执行效果都会撤销;
- MySQL提交(写或保存)操作是自动进行的,这称之为隐含提交 。但是在事务处理块中,提交不会隐含进行,要使用COMMIT子句进行提交 。如:
7. 触发器
- 什么是触发器?
- 当某条SQL语句发生时,自动执行某些其他的SQL语句的时候就需要使用到触发器 。触发器只能响应:DELETE,INSERT,UPDATE这三个特定操作 。
- 创建触发器?
- 创建触发器时需要给出最重要的四条信息:1.全局唯一的触发器名;2.触发器关联的表;3.触发器在何时执行(操作执行之前或者之后)4.触发器应该响应的活动(DELETE, INSERT或者UPDATE);
- 由于触发器只能响应特定的三种类型的操作,因此可创建的触发器也就三种类型:INSERT触发器,DELETE触发器以及UPDATE触发器 。
INSERT触发器
- 在执行INSERT触发器时,也这样几点需要注意:1.在INSERT触发器代码内,可以引用一个名为NEW的虚拟表,可以用NEW来访问刚插入的行数据;2.在BEFORE INSERT触发器中,NEW中的值可以被更新;3.对于AUTO_INCREMENT列,NEW在INSERT执行之前包含0,在INSERT执行之后包含新的自定生成值 。
- 创建一个INSERT触发器,每次插入一行数据,每次会返回当前插入的行数据的id 。
- 有这样一些细节:
- 使用CREATE TRIGGER来创建触发器;
- AFTER INSERT表明在插入行数据之后,触发器才会执行特征操作;
- FOR EACH ROW 表示对插入的每一行数据,触发器都起作用;
- 针对INSERT触发器,可以使用虚拟表NEW,来使用刚插入的行数据 。比如例子中,SELECT NEW.cust_id INTO @newinsertid表示将新插入的行数据的id赋值给变量@newinsertid;
DELETE触发器
- DELETE触发器在DELETE语句执行之前或者之后,需要知道以下两点:
- 在DELETE触发器代码内,可以引用一个名为OLD的虚拟表,来访问被删除的行;
- OLD表中的数据只能读,不能被更新,而在INSERT触发器中,就可以通过NEW来更新被插入的行数据;
- 例如,针对customers表,当删除一行数据时,返回被删除数据的cust_id以及cust_name:
推荐阅读
- mysql行列转换
- mysql查询条件字段值末尾有空格也能查到数据问题
- MySQL性能指标实时监控--awk命令实现
- MySQL连表Update修改数据
- MySQL数据库的SQL预处理技术,优化数据库必备
- MySql 三大知识点,索引、锁、事务,原理分析
- MySQL基于GTID的多线程同步方案
- 11条MySQL规范,你知道的有几个? Java架构师追风 2019-08-28 16:36:08
- MySQL索引原理
- MySQL、SQL Server、Oracle对比,你必须了解的三大数据库区别
