zoukankan      html  css  js  c++  java
  • 数据库 事务

    事务:是一种机制,一个操作序列,它可以包含一条操作命令,或一组操作命令,并且把所有的命令作为一个整体一起向系统体交,或撤销

    事务的特点(ACID);

    1)原子性:

    事务是一个完整的操作,事务的个元素是不可分的,事务的所有元素必须作为一个整体提交或回滚,如果事务中的任何元素失败,则整个事务将失败

    2)一致性:

    事务开始,汇总存储处于一致状态,在进行是不处于一致状态,当事务完成时,数据必须处于一至状态

    3)隔离性

    对数据修改的所有并发事务时彼此隔离的,这表名事务必须隔离的

    4)持久性

    事务的持久性指不管发生了故障,事务处理结果都是永久的,一旦事务的被提交,事务的效果被永久的保留在数据库中,

    二:事务的操作

    默认情况下mysql的事务是自动提交的,当sql语句提交时事务自动提交,

    手动对事务进行控制的方法:

    事务处理命令

    使用set设置处理方式

    事务处理命令控制事务:

    begin  开始一个事务

    commit 提交一个事务

    rollback 回滚一个事务

    事务必须给予innodb存储引擎

    创建一个表:
    MariaDB [auth]> create table users(user_name char(18) not null,user_passwd char(50) default '',primary key (user_name));
    Query OK, 0 rows affected (0.00 sec)

    定义它的存储引擎:

    MariaDB [auth]> alter table auth.users engine=innodb
    -> ;
    Query OK, 0 rows affected (0.00 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    开始一个事务;他不会提交

    MariaDB [auth]> begin;
    Query OK, 0 rows affected (0.00 sec)

     在里边插入数据


    MariaDB [auth]> insert into users values('lisi',password('123456'));
    Query OK, 1 row affected (0.00 sec)

    MariaDB [auth]> insert into users values('wangwu',password('654321'));
    Query OK, 1 row affected (0.00 sec)

    提交事务:提交完成事务变成永久的

    MariaDB [auth]> commit;
    Query OK, 0 rows affected (0.00 sec)

    查询:

    MariaDB [auth]> select * from users;
    +-----------+-------------------------------------------+
    | user_name | user_passwd |
    +-----------+-------------------------------------------+
    | lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | wangwu | *2A032F7C5BA932872F0F045E0CF6B53CF702F2C5 |
    +-----------+-------------------------------------------+
    2 rows in set (0.00 sec)

     例:

    开始一个事务

    MariaDB [auth]> begin;
    Query OK, 0 rows affected (0.00 sec)

    清空李四密码

    MariaDB [auth]> update users set user_passwd=password('') where user_name='lisi';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1 Changed: 1 Warnings: 0

    查询:

    MariaDB [auth]> select * from users;
    +-----------+-------------------------------------------+
    | user_name | user_passwd |
    +-----------+-------------------------------------------+
    | lisi | |
    | wangwu | *2A032F7C5BA932872F0F045E0CF6B53CF702F2C5 |
    +-----------+-------------------------------------------+
    2 rows in set (0.00 sec)

    因为没有提交,还不能确定,回滚 就又回去了

    MariaDB [auth]> rollback;
    Query OK, 0 rows affected (0.00 sec)

    查询,回到原样:

    MariaDB [auth]> select * from users;
    +-----------+-------------------------------------------+
    | user_name | user_passwd |
    +-----------+-------------------------------------------+
    | lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | wangwu | *2A032F7C5BA932872F0F045E0CF6B53CF702F2C5 |
    +-----------+-------------------------------------------+
    2 rows in set (0.00 sec)

    使用set命令:

    禁止自动提交,在往里面插入东西,不会自动提交了,在输入一条命令:MariaDB [auth]> commit;他才会提交

    MariaDB [auth]> set autocommit=0;

    Query OK, 0 rows affected (0.00 sec)

     开启自动提交:

    MariaDB [auth]> set autocommit=1;
    Query OK, 0 rows affected (0.00 sec)

  • 相关阅读:
    mfc窗口,父窗口parentwindow,所有者窗口ownerwindow 区别
    svn冲突问题详解 SVN版本冲突解决详解
    input的on(‘input’,function(0{})事件
    input 输入框两种改变事件的方式
    JSON格式
    AJAX的dataType问题
    什么是跨域请求?
    JSON.parse()和JSON.stringify()使用介绍
    .replace(/-/g,"/")的用法
    docker 实践(一)
  • 原文地址:https://www.cnblogs.com/liu1584712/p/11684167.html
Copyright © 2011-2022 走看看