mysql> CREATE TABLE emploee (
-> name CHAR(64) NOT NULL,
-> email CHAR(64),
-> password CHAR(64),
-> PRIMARY KEY (email)
-> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.01 sec)
#InnoDB,MyISAM
#两种类型有什么区别:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
#MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持,外键等高级数据库功能。
#ENGINE= InnoDB 修改表的引擎

#什么是事务表呢:

#事务表就是可以进行Transaction事务回滚操作, InnoDB是一种数据库存储引擎.他是事务型数据库的首选引擎,支持ACID事务,支持行级锁定。InnoDB是为处理巨大数据量时的最大性能设计。

#InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。

#什么是非事务表?

#Nontransactional Tables,非事务表,不支持事务的表,也就是使用MyISAM存储引擎的表。
#非事务表的特点是不支持回滚

mysql> CREATE TABLE log ( id INT AUTO_INCREMENT, email CHAR(64), message TEXT,
-> status ENUM('FAIL','OK')DEFAULT 'FAIL',
-> ts TIMESTAMP,
-> PRIMARY KEY(id)
-> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
#ENUM进行枚举
-> delimiter $$
-> CREATE TRIGGER tr_employee_insert_before BEFORE INSERT ON emploee
-> FOR EACH ROW
-> BEGIN
-> INSERT INTO log(email,message)
-> VALUES (NEW.email,CONCAT('Adding employee',NEW.name));
-> SET @LAST_INSERT_ID = LAST_INSERT_ID();
-> END $$ mysql> CREATE TRIGGER tr_employee_insert_after AFTER INSERT ON emploee
-> FOR EACH ROW
-> UPDATE log SET status = 'OK' WHERE id = @LAST_INSERT_ID;

 

mysql> SET @pass = PASSWORD('XYZZ');
Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO emploee(name,email,password)
-> VALUES('chuck','chuck@163.com',@pass);
Query OK, 1 row affected, 1 warning (0.01 sec) mysql> select * from emploee;
+-------+---------------+-------------------------------------------+
| name | email | password |
+-------+---------------+-------------------------------------------+
| chuck | chuck@163.com | *186290269C2BC1FE5ADC8244109A286B7910AC1A |
+-------+---------------+-------------------------------------------+
1 row in set (0.00 sec) mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec) mysql> SET @pass = PASSWORD('xzy')
-> ;
Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO emploee(name,email,password)
-> VALUES('quan','quan.qq.com',@pass);
Query OK, 1 row affected, 2 warnings (0.00 sec) mysql> INSERT INTO log(email,message)
-> VALUES(‘zhi.qq.com’,'badbad'); mysql> COMMIT; #START TRANSACTION==开启事务标志 #COMMIT: ====结束事务标志,不执行commit,事务并没有提交,若退出,事务回滚 #mysql事务支持的引擎是InnoDB #默认情况下autocommit的值为1 mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec) mysql> # 当autocommit为开启状态时,即使没有手动start transaction开启事务,mysql默认也会将用户的操作当做事务即时提交。 #当autocommit为ON的情况下,并且又手动开启了事务,那么mysql会把start transaction 与 commit之间的语句当做一次事务来处理,默认并不会帮用户提交需要手动提交,如果用户不提交便退出了,那么事务将回滚。

  

 

ZAQI的更多相关文章

  1. 学习KnockOut第一篇之Hello World

    学习KnockOut第一篇之Hello World 笔者刚开始学习KnockOut.写的内容就相当于一个学习笔记.且在此处向官网致敬,比较喜欢他们家的Live Example版块,里面有jsFiddl ...

  2. openstack手动玩转

    <一,preface Important Project Network> openstack or all most cloud env Network desgine  is so m ...

  3. JMeter中BeanShell Sampler调试分享

    BeanShell脚本 String s = "s"; String y = "y"; boolean result = s.equals(y); vars.p ...

随机推荐

  1. [Beta]the Agiles Scrum Meeting 11

    会议时间:2020.5.26 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 帮助解决技术问题 tq 完成评测机新增评测指标 评测部分增加更多评测指标 wjx ...

  2. oo第一次博客-三次表达式求导的总结与反思

    一.问题回顾与基本设计思路 三次作业依次是多项式表达式求导,多项式.三角函数混合求导,基于三角函数和多项式的嵌套表达式求导. 第一次作业想法很简单,根据指导书,我们可以发现表达式是由各个项与项之间的运 ...

  3. Spring动态添加定时任务

    Spring动态添加定时任务 一.背景 二.需求和实现思路 1.能够动态的添加一个定时任务. 2.能够取消定时任务的执行. 3.动态的修改任务执行的时间. 4.获取定时任务执行的异常 三.代码实现 四 ...

  4. 【Azure Redis 缓存】Windows版创建 Redis Cluster 实验 (精简版)

    简介 学习Redis Cluster的第一步,即本地搭建Redis Cluster.但是在Redis的官方文档中,是介绍在Linux系统中搭建Redis Cluster.本文主要介绍在Windows系 ...

  5. python fnmatch & glob

    1,转载:Python模块学习 - fnmatch & glob - Dahlhin - 博客园 (cnblogs.com) 介绍 fnmatch 和 glob 模块都是用来做字符串匹配文件名 ...

  6. GPS与AGPS定位服务

    最近客户反馈车子启动从车库开到地面后,机器定位相对OBD内部定位会慢很多. 机器定位主要依赖定位模块 + AGPS辅助定位. 其中定位模块目前主流支持的有以下三种定位系统. 一.GPS(全球定位系统) ...

  7. cm0 逆向分析

    目录 cm0 逆向分析 前言 Strings工具复习 String工具使用说明 Strings工具解cm0题 cm0 逆向分析 前言 Emmmmm,我假装你看到这里已经学过了我的<恶意代码分析实 ...

  8. MySQL 默认隔离级别是RR,为什么阿里这种大厂会改成RC?

    我之前写过一篇文章<为什么MySQL选择REPEATABLE READ作为默认隔离级别?>介绍过MySQL 的默认隔离级别是 Repeatable Reads以及背后的原因. 主要是因为M ...

  9. uni-app APP端隐藏导航栏自定义按钮

    话不多说,上代码 // #ifdef APP-PLUS var webView = this.$mp.page.$getAppWebview(); // 修改buttons webView.setTi ...

  10. webpack 配置devServer 服务器

    webpack 配置devServer 服务器 /** * loader: 1. 下载 2. 使用(配置) * plugins:1. 下载 2. 引入 3.使用 */ // 用来拼接绝对路径的方法 c ...