MySQL(存储过程,支持事务操作)】的更多相关文章

day61 保存在MySQL上的一个别名   >   一坨SQL语句 -- delimiter // -- create procedure p1() -- BEGIN -- select * from student; -- INSERT into teacher(tname) values("ct"); -- END// -- delimiter; call p1(); #把sql语句封装进p1中 注释内容(创建存储过程)执行完,可以通过call调用(执行存储过程). 在函数…
最近需要通过JDBC对数据库做事务型操作,实践时发现,并没有达到想要的效果,表现在:1.每次执行executeUpdate()后,数据就马上能在DB中查到.但按理来说,我还没执行commit(),DB中不应该有这个数据:2.执行rollback()时,数据也没回滚. 定位问题后,发现是数据库表类型在作祟:当时设定的“表类型”为MyISAM,而这种类型,是不支持事务操作的.能够支持事务操作的表类型是“InnoDB",修改表类型为”InnoDB"后,事务操作终于正常了. 按网上的说法,In…
原文链接:http://hideto.iteye.com/blog/195275 MySQL存储过程之事务管理 ACID:Atomic.Consistent.Isolated.Durable 存储程序提供了一个绝佳的机制来定义.封装和管理事务. 1,MySQL的事务支持 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持ACID事务.行级锁.并发 Berkeley DB:支持事务 隔离级别: 隔离级别决定了…
mysql存储过程之事务篇 事务的四大特征: ACID:Atomic(原子性).Consistent(一致性).Isolated(独立性).Durable (持久性) MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: sql代码  1. MyISAM:不支持事务,用于只读程序提高性能 2. InnoDB:支持ACID事务.行级锁.并发 3. Berkeley DB:支持事务 事务隔离级别标准: ANSI(美国国家标准学会)标准定义了4个隔离级别,MySQL的InnoDB都…
什么是事务? 事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.程序和事务是两个不同的概念.一般而言:一段程序中可能包含多个事务.(说白了就是几步的数据库操作而构成的逻辑执行单元) 事务具有四个特性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持续性(Durability).这四个特性也简称ACID性. (1)原子性:事务是应用中最小的执行单位,就如原子是自然界最小颗粒,具有不可再分的特征一样.事务是应用…
什么是事务? 事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.程序和事务是两个不同的概念.一般而言:一段程序中可能包含多个事务.(说白了就是几步的数据库操作而构成的逻辑执行单元) 事务具有四个特性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持续性(Durability).这四个特性也简称ACID性. (1)原子性:事务是应用中最小的执行单位,就如原子是自然界最小颗粒,具有不可再分的特征一样.事务是应用…
最近需要通过JDBC对数据库做事务型操作,实践时发现,并没有达到想要的效果,表现在:1.每次执行executeUpdate()后,数据就马上能在DB中查到.但按理来说,我还没执行commit(),DB中不应该有这个数据:2.执行rollback()时,数据也没回滚. 定位问题后,发现是数据库表类型在作祟: 当时设定的“表类型”为MyISAM,而这种类型,是不支持事务操作的. 能够支持事务操作的表类型是“InnoDB",修改表类型为”InnoDB"后,事务操作终于正常了. 按网上的说法,…
有这样一个需求.要求在mysql存储过程中使用到事务,并且运行的是动态的sql语句 代码例如以下: BEGIN DECLARE in_data TEXT; /** 标记是否出错 */ DECLARE errno INT DEFAULT '0'; /** 假设出现sql异常.则将t_error设置为1后继续运行后面的操作 */ DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK;SET errno = 1; END; START TRA…
用的是一个绿色版的mysql数据库,发现不支持事务,在网络上搜集资料找到解决方案: 1.执行语句  SHOW ENGINES; 如果发现InnoDB全部显示为“YES”,说明该版本的数据库支持事务 2.修改某个表支持事务 ALTER TABLE 表名 ENGINE = INNODB; 如果没有出错,则修改该表支持事务成功.…
1.在mysql客户管,如:Navicate.SQLyog在导航面板中选择要转换为InnoDB存储引擎类型的数据库,例如选择db_yunping数据库.如下图所示: 2. 在查询窗口中输入 show engines; 3. 在“显示查询框”页面中,我们发现,InnoDB类型的Transactions项为YES,这说明InnoDB类型的数据库或数据表支持事务处理. 下面,我们只要将相关的数据表修改为InnoDB存储引擎类型,就能支持事务处理操作了. 4. 在查询窗口中输入 ALTER TABLE…
修改表的类型为 INNODB 的 SQL: alter table category_ ENGINE = innodb;     查看表的类型的 SQL show table status from tableName;   不过有个前提,就是当前的 MYSQL 服务器本身要支持 INNODB, 如果不支持,请看 开启 MYSQL INNODB 的办法…
将会用到的几个表 mysql> DESC products; +------------+--------------+------+-----+---------+----------------+ | Field      | Type         | Null | Key | Default | Extra          | +------------+--------------+------+-----+---------+----------------+ | prod_id…
注释掉/etc/my.cnf 下面的 #loose-skip-innodb…
-- 1.DECLARE EXIT HANDLER FOR SQLEXCEPTION 语句后面可以跟一个 begin end的复合语句块,也可以直接跟一个简单语句例如 :DECLARE EXIT HANDLER FOR SQLEXCEPTION v_succ=0; -- 2.EXIT会在执行异常后执行执行 FOR SQLEXCEPTION 后的语句或块而整个停止下来:CONTINUE选项会在异常后继续执行,从而将id为2的记录写入到数据库中. DROP PROCEDURE IF EXISTS p…
create procedure sp_sw2() begin declare error int default 0; declare continue handler for SQLEXCEPTION set error=1; START TRANSACTION; insert into t_student values('100','20169998','段天德1','男',20,'信息息'); insert into t_student values(1,'20169999','段天德1…
mysql 视图 触发器 存储过程 函数事务 索引 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 子查询 SELECT * FROM ( SELECT id, NAME FROM user WHERE id ) AS A WHERE A. NAME = 'anner'; 1.创建视图 CREATE VIEW v1 AS SELECT id,age FROM user WHERE i…
一.场景导入 现在有一张仓库表,仓库表中记录了每一个物品的数量,还有一张用户表,用户购买产品,仓库表的产品数量减少,而用户拥有产品的数量增加. 但是如果仓库中的产品数量不足时怎么处理? 例子: #仓库表 create table if not exists Warehouse( pro_id int primary key, pro_name ), pro_num int not null ); #用户表,用户表中的co_pro与仓库表中pro_id为外键关系 create table cust…
最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySQL,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元: 2. A账户扣除500元: 3. B账户增加500元: 正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜.那如果A账…
最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元: 2. A账户扣除500元: 3. B账户增加500元: 正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜.那如果A账…
MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. 注释 MySQL存储过程可使用两种风格的注释. 双模杠:--注释内容    一般用于单行注释. c风格:/* 注释内容 */   一般用于多行注释. 理解DELIMITER声明分割符 DELIMITER是分割符的意思. DELIMITER 符号 -- 表示设置某个符号为分隔符. 通常程序中经常出现…
最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元: 2. A账户扣除500元: 3. B账户增加500元: 正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜.那如果A账…
为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元: 2. A账户扣除500元: 3. B账户增加500元: 正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜.那如果A账户扣了钱之后,系统出故障了呢?A白白损失了500,而B也没有收到本该属于他的500.以上的案例中,隐藏着一个前提条件:A扣钱和B加钱,要么同时成功,要么同时失败.事务的需求…
前言: 因为没有多少时间和精力,目前无法深入研究数据库中的事务,比如 但是,对于事务的一些基本知识,还是需要牢牢掌握的,做到了解事务的基本常识,在实际开发中能够理解各个持久层框架对事务的处理 一:是么是事务? 下面是百度百科的结果 在开发中对于一个业务逻辑需要对数据进行的一系列CRUD操作,这一系列操作,我们可以把它称为一个事务 这样理解事务就必须了解事务四大特性:原子性 .一致性.隔离性.持久性 二:事务的四大特性--ACID 2.1:原子性 在一个事务中对数据的所有操作,属于一个单元,不可分…
事务是数据库的一个重要功能,所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位.在Qt中用transaction()开始一个事务操作,用commit()函数或rollback()函数进行结束.commit()表示提交,即提交事务的所有操作.具体地说就是将事务中所有对数据库的更新写回到数据库,事务正常结束.rollback()表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状…
如图查看表的属性: InnoDB 支持事务. MyISAM 不支持事务,不过性能更优越.…
视图 视图虚拟表,是一个我们真实查询结果表,我们希望将某次查询出来的结果作为单独的一个表,就叫视图,无法对图字段内容进行增删改. --格式: CREATE VIEW 视图名字 AS 操作; --比如: CREATE VIEW v1 AS SELECTE nid,name FROM table1; --删除视图: DROP VIEW 视图名字; --更新: ALTER VIEW 视图名字 AS 新视图操作; --使用:和普通查询一样: SELECT * FROM 视图名字; 视图 触发器 允许在对…
MySQL 中,单个 Store Procedure(SP) 不是原子操作,而 Oracle 则是原子的.如下的存储过程,即使语句2 失败,语句 1 仍然会被 commit 到数据库中: create table testproc(id int(4) primary key, name varchar(100)); CREATE PROCEDURE test_proc_ins( IN i_id INT, IN i_name VARCHAR(100) ) BEGIN INSERT INTO tes…
存储过程是:通过一系列的SQL语句, 根据传入的参数(也可以没有), 通过简单的调用, 完成比单个SQL语句更复杂的功能, 存储在数据库服务器端,只需要编译过一次之后再次使用都不需要再进行编译.主要对存储的过程进行控制. 事务是一系列的数据更改操作组成的一个整体.一旦事务中包含的某操作失败或用户中止,用户可以控制将事务体中所有操作撤消,返回事务开始前的状态.事务中的操作是一个整体,要么整体完成,要么全部不做.从而保证了数据的完整性.Mysql中,MyISAM存储引擎不支持事务,InnoDB支持.…
函数 MySQL中提供了许多内置函数: 内置函数 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值. 二.聚合函数(常用于GROUP BY从句的SELECT查询中) AVG(col)返回指定列的平均值 COUNT(col)返回指定列中非NULL值的个数 MIN(col)返回指定列的最小值 MAX(col)返回指定列的最大值 SUM(col)返回指定列的所有值之和 G…
在asp.net结合mysql的开发中,我平时用到的事务处理是 使用 TransactionOptions  来进行处理 TransactionOptions transactionOption = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, //设置事务隔离级别 Timeout = new TimeSpan(0, 5, 10) // 设置事务超时时间为5分10秒 }; using (Transa…