• MySQL管理实务处理


      事物处理可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么全不执行。

    1. 事务:指一组sql语句
    2. 回退:指撤销指定的sql语句过程
    3. 提交:将未存储的sql语句结果写入数据库表
    4. 保留点:指事务处理过程中设置的临时占位符,可以对他发布回退,与回退到整个事务不同

    开始事务

    mysql> start transaction

    回退事务

    mysql> rollback
    1. 只能在一个事务内使用,即start transaction
    2. 事务处理用来管理insert,update,delete语句,不能回退select语句,不能回退create和drop,事务处理块中可以使用着两条语句,如果回退执行,他们不会被撤消
    mysql> select * from stu_info;
    +--------+---------+-----+-------+-------+
    | num    | name    | age | grade | socre |
    +--------+---------+-----+-------+-------+
    | 000001 | gushi   |  23 | 1006  |    90 |
    | 000002 | hualian |  21 | 1005  |   100 |
    | 000004 | gushi   |  16 | 1006  |    95 |
    | 000009 | abc     |   8 | 2004  |     0 |
    +--------+---------+-----+-------+-------+
    4 rows in set (0.00 sec)
    
    mysql> start transaction;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> delete from stu_info;
    Query OK, 4 rows affected (0.00 sec)
    
    mysql> select * from stu_info;
    Empty set (0.00 sec)
    
    mysql> rollback;
    Query OK, 0 rows affected (0.44 sec)
    
    mysql> select * from stu_info;
    +--------+---------+-----+-------+-------+
    | num    | name    | age | grade | socre |
    +--------+---------+-----+-------+-------+
    | 000001 | gushi   |  23 | 1006  |    90 |
    | 000002 | hualian |  21 | 1005  |   100 |
    | 000004 | gushi   |  16 | 1006  |    95 |
    | 000009 | abc     |   8 | 2004  |     0 |
    +--------+---------+-----+-------+-------+
    4 rows in set (0.00 sec)

    使用COMMIT

      MySQL语句一般都是针对数据库表执行和编写的,这是所谓的隐含提交,即提交操作是自动进行的。但是在事务处理块中提交不会自动进行,为进行明确的提交,用commit

    mysql> start transaction;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> delete from stu_info where age=18;
    Query OK, 5 rows affected (0.34 sec)
    
    mysql> delete from stu_info where age=20;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> commit;
    Query OK, 0 rows affected (0.44 sec)

      最后commit语句仅在不出错时写出更改,如果第一条delete起作用,第二条delete失败,则delete不会提交,实际上他是自动被撤销的

      当COMMIT或rollback语句执行后,事务会自动关闭

    保留点

      COMMIT或rollback撤销的是整个事务,有时需要部分提交或回退,在事务块中放适当的占位符,如果需要回退,就会退到某个占位符。

    mysql> savepoint s1;

      每个保留点名字唯一

    mysql> rollback to s1;
    1. 保留点越多越好
    2. 保留点在事务处理完成(执行一条rollback或COMMIT)后自动释放,也可以用release savepoint 明确释放保留点

    更改默认的提交行为

    mysql> set autocommit=0;

      执行sql语句时,该语句都是针对表执行的,而且都是立即生效,autocommit决定是否自动提交,autocommit(0)假不自动提交,直到autocommit为真才自动提交,autocommit针对每个链接而不是服务器

      

  • 相关阅读:
    记一次cdh6.3.2版本spark写入phoniex的错误:Incompatible jars detected between client and server. Ensure that phoenix-[version]-server.jar is put on the classpath of HBase in every region server:
    kylin的除法函数的坑
    Exception:kylin构建cube, Cannot modify mapReduce.queue.name at runtime
    cdh版本 livy部署
    kylin-3.1.1-bin-hadoop3搭建,构建cube报的错误,Cannot modify dfs.replication at runtime. It is not in list of params that are allowed to be modified at runtime
    apache开源 国内镜像地址
    一次phoniex表查询报出 org.apache.hadoop.hbase.NotServingRegionException
    spark高级分析2的数据集地址
    题解 P4240【毒瘤之神的考验】
    题解 P4688/BZOJ4939 【[Ynoi2016] 掉进兔子洞】
  • 原文地址:https://www.cnblogs.com/tianzeng/p/10361476.html
Copyright © 2020-2023  润新知