码迷,mamicode.com
首页 > 数据库 > 详细

MySQL之事务

时间:2018-11-22 00:28:53      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:ror   一个用户   ble   handle   now()   数据改变   持久   不可   中介   

一,介绍

1、什么是事务:数据库中的事务是指逻辑上的一组操作,这组操作要么都执行成功,要么都不执行成功。
2、事务的管理:默认情况下Mysql会自动管理事务,一条SQL语句独占一个事务。

事务的四大特性:
(1)原子性:是指事务是一个不可分割的整体,事务中的操作要么全部发生,要么一个都不发生。
(2)一致性:事务处理前后数据的完整性必须保持一致。
    完整性是指一个数据在某个时间点完全满足数据库中约束的要求。
(3)隔离性:是指多个用户访问同一个数据库时,一个用户的事务处理不能被其他用户的事务干扰,多个并发事务之间的数据要相互隔离。
(4)持久性:是指一个事务一旦被提交,它对数据库中的数据改变是永久的。

举例说明:

create table user2(
id int primary key auto_increment,
name char(32),
balance int
);

insert into user2(name,balance)
values
(‘wsb‘,1000),
(‘egon‘,1000),
(‘ysb‘,1000);


#原子操作
start transaction;
update user2 set balance=900 where name=‘wsb‘; #买支付100元
update user2 set balance=1010 where name=‘egon‘; #中介拿走10元
update user2 set balance=1090 where name=‘ysb‘; #卖家拿到90元
commit;

#出现异常,回滚到初始状态
start transaction;
update user2 set balance=900 where name=‘wsb‘; #买支付100元
update user2 set balance=1010 where name=‘egon‘; #中介拿走10元
uppdate user2 set balance=1090 where name=‘ysb‘; #卖家拿到90元,出现异常没有拿到
rollback;

mysql> select * from user;
+----+------+---------+
| id | name | balance |
+----+------+---------+
|  1 | wsb  |    1000 |
|  2 | egon |    1000 |
|  3 | ysb  |    1000 |
+----+------+---------+
rows in set (0.00 sec)

下面是操作:当p_return_code为1时,表示异常,立马回滚。当为2时,出现警告,立马回滚原始状态。0表示成功

delimiter //
create PROCEDURE b6(
    OUT p_return_code tinyint
)
BEGIN 
    DECLARE exit handler for sqlexception 
    BEGIN 
        -- ERROR 
        set p_return_code = 1; 
        rollback; 
    END; 

    DECLARE exit handler for sqlwarning 
    BEGIN 
        -- WARNING 
        set p_return_code = 2; 
        rollback; 
    END; 

    START TRANSACTION; 
        insert into blog(name,sub_time) values(‘yyy‘,now());
    COMMIT; 

    -- SUCCESS 
    set p_return_code = 0; #0代表执行成功

END //
delimiter ;

set @res=123;
call b6(@res);
select @res;

 

 

MySQL之事务

标签:ror   一个用户   ble   handle   now()   数据改变   持久   不可   中介   

原文地址:https://www.cnblogs.com/glh-ty/p/9998094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!