MYSQL 部分事务

MYSQL 中通过 savepoint 的方式来实现只提交事务的一部分。

step 1 : savepoint savepoint_name;做标记

step 2 :rollbak to savepoint savepoint_name;回滚到标记点

setp 3 :release savepoint savepoint_name;解除标记

----------------------------------------------------------------------------------------

例子:

create table T(X int,Y int); # 定义表

-------------------

delimiter //

create procedure proc_for_T_insert() # 在MYSQL中存储过程不管有没有参数,都要有(),SQL Server 中没有参数的存储过程一定不可以用();
       begin
            insert into T(X,Y) values(1,1);      
            savepoint savepoint_1;                #step : 1、 做标记
            insert into T(X,Y) values(2,2);
            rollback to savepoint savepoint_1;#step : 2、回滚到标记点
            release savepoint savepoint_1      #step : 3、解除标记
       end //
delimiter ;

call proc_for_T_insert;

select * from T;

时间: 2024-10-28 22:06:49

MYSQL 部分事务的相关文章

MySQL的事务与事务隔离

MySQL中自从引入InnoDB引擎后,在MySQL中就支持事务,事务就是一组原子性的查询语句,也即将多个查询当作一个独立的工作单元,平时通过提交工作单元来完成在事务中的相应的查询或修改,在能支持事务的数据库中必须要满足ACID测试,即事务的四个特性: A:Atomicity,原子性(都执行或者都不执行) C:Consistency,一致性(从一个一致性状态转到另外一个一致性状态) I:Isolaction,隔离性(一个事务的所有修改操作在提交前对其他事务时不可见的) D: Durability

mysql之事务

我们先来说说什么是事务: 事务就是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功,要不全都失败.一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行.换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的.如果在事务的任何操作失败,则整个事务将失败. mysql的事务支持不是绑定在mysql服务器本身,而是与存储引擎相关.例如,MyISAM:不支持事务,用于只读程序提高性能:InnoDB:支持ACID事务,行级所,并发:Berkeley DB:支持事务. 事务的

MySQL的事务

MySQL的事务 1.事务:事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行. 2.事务具备的四个特性(简称为ACID性): (1)原子性(Atomicity): 事务是应用中最小的执行单位,具有不可再分的特征,事务是应用中最小的逻辑执行体: (2)一致性(Consistency): 事务执行的结果必须使数据库从一个一致性状态转变到另一个一致性的状态.当数据库只包含事务成功提交的结果时,数据库处于一致性状态.如果系统运行发生中断,某个事务尚未完成而

MySQL 数据库事务与复制

好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,而是在应用技术. 为了更有效率与效果的用好技术,我们需要了解一些技术的原理与工作方式. 带着问题从使用者的角度去剖析技术原理,并将开源技术产品和框架作为一类技术的参考实现来讲解. 以讲清原理为主要目的,对于具体实现的技术细节若无特别之处则尽可能点到即止.

MySql开启事务

1 CREATE PROCEDURE test_sp1( ) 2 BEGIN 3 DECLARE t_error INTEGER DEFAULT 0; 4 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 5 6 START TRANSACTION; 7 INSERT INTO test VALUES(NULL, 'test sql 001'); 8 INSERT INTO test VALUES('1', 'test sql 00

MySQL数据库事务隔离级别(Transaction Isolation Level)

今天在学习JDBC的时候看到了关于MySql的事务的隔离级别的问题,感觉内容挺高级的,所以记录一篇文章,以备后面使用. 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. 2 [mysqld] 3 transaction-isolation = R

找出未提交的MySQL线程/事务

找出未提交的MySQL线程/事务: SELECT trx_id,trx_state,trx_started,trx_mysql_thread_id,CURRENT_TIMESTAMP - trx_started AS RUN_TIME from information_schema.innodb_trx; SELECT * from information_schema.processlist;   这个能看到上面哪个SQL线程ID(下图的378号线程就是造成MDL锁的罪魁祸首) SELECT

mysql.connector 事务总结

mysql.connector事务总结: connection.autocommit = 0 (默认值) 事务处理 使用 connection.commit()方法 #!/usr/bin/env python # -*- coding:utf-8 -*- '''mysql.connector事务总结: connection.autocommit = 0 (默认值) 事务处理 使用 connection.commit()方法 分析: 智能commit状态: connection.autocommi

Mysql分布式事务

关于Mysql分布式事务介绍,可参考:http://blog.csdn.net/luckyjiuyi/article/details/46955337 分为两个阶段:准备和执行阶段.有两个角色:事务的管理者(TM)和事务执行者(RM,Mysql Server). XA START  事务启动标识,使事务处于ACTIVE状态 XA END   事务结束标识,使事务处于IDLE状态 当事务处于IDLE状态,可 XA PREPARE  通知准备标识,处于 PREPARED状态 对于PREPARED状态

【MySQL之事务隔离级别】

本文通过实例展示MySQL事务的四种隔离级别. 1 概念阐述 1)Read Uncommitted(读未提交) 其他事务的在未提交的改动下,当前事务可以察觉. 2)Read Committed(读提交) 其他事务在提交改动之后,当前事务可以察觉,如果其他事务未提交改动,那么不会察觉. 3) Repeatable Read(可重复读) 其他事务提交了改动,并且当前事务也提交的操作,之后才可以察觉改动. 4) Serializable(可串行化的) 通过加锁方式,仅仅保持一个事务执行更新操作,如果其