九、事务 & 备份

一、事务

1.开启事务

事务的开启需要使用START TRANSACTION语句

2.事务提交

当开启了事务之后,运行完一系列的语句必须要进行事务的提交才可以真正的完成数据库数据更新,需要使用COMMIT语句

3.事务回滚

开启了事务之后,在运行一系列语句的过程中如果出现了错误,我们可以使用事务回滚,将操作的数据回到原点,需要使用ROLLBACK语句

4.事务的正确使用

首先来看两段错误的使用方式,这里的前提是使用了第三方的工具来批量执行sql语句

START TRANSACTION;  
INSERT INTO tableA VALUES(1, 'A');
INSERT INTO tableA VALUES(2, 'B');
ROLLBACK;

在这种情况下,无论事务过程中的语句是否执行正确,都会进行回滚

START TRANSACTION;  
INSERT INTO tableA VALUES(1, 'A');
INSERT INTO tableA VALUES(1, 'B');
COMMIT;

再来看一下这种情况,假设这个过程中,第二条插入语句出现主键冲突,语句就中断了,COMMIT并不会执行,但是需要注意的是第一条插入语句是成功的完成了,并且事务仍处于开启状态,那么在我们目前连接没有中断过的前提下,在接下来的其他操作过程中使用了COMMIT,则会将第一条插入语句一并提交

  • 正确的使用方式
DELIMITER //
    CREATE PROCEDURE t_test()
    BEGIN
        DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
        START TRANSACTION;
        INSERT INTO tran_test VALUES('A',1);
        INSERT INTO tran_test VALUES('B',2);
        COMMIT;
    END //
DELIMITER ;
CALL t_test()

二、备份

目前大多数的备份都是使用第三方图形界面工具来完成的,这里简单的说一下如何进行命令行来进行数据库的备份以及恢复

1.备份
  • 备份指定数据库的所有表及数据
mysqldump -u root -p dataBaseName > J:/back.sql;
  • 备份指定数据库的某个表及数据
mysqldump -u root -p dataBaseName tableName > J:/back.sql;
  • 备份指定数据库的所有表的表结构
mysqldump -u root -p -d dataBaseName >  J:/back.sql;
  • 备份指定数据库的某个表的表结构
mysqldump -u root -p -d dataBaseName tableName >  J:/back.sql;
2.恢复
mysql -u root -p dataBaseName <  J:/back.sql;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值