SQL——事务

作者: 薛定谔与猫的故事 | 来源:发表于2018-04-04 11:15 被阅读0次

    事务(transaction)由查询和更新语句序列组成(何为序列,有序的列)。

    SQL规定当一条SQL语句被执,就隐式地开始了一个事务。系列SQL语句之一会结束一个事务。
    Commit work:提交当前事务,也就是将该事务所做的更新在数据库中持久保存,并结束当前事务,开始一个新的事务,通俗来讲就是保存了文档。

    Rollback work:回滚当前事务,即撤销该事务中所有SQL语句对数据库的更新。这样,数据库就恢复到执行该事务第一条语句的之前的转态,通俗来讲就是不保存并退出编辑。

    例如先后执行下面语句

    COMMIT WORK ;
    
    INSERT INTO department
        VALUES ('design','tylor',400000);
    
    ROLLBACK WORK ;
    

    department表的变化如下:


    insert
    rollback

    事务是很有用。但在事务执行过程中检测到错误是,事务回滚是有用的。例如,如果一个事务还没有完成,即commit work,一旦发生SQL语句错误、断电、系统崩溃时,数据库系统能够回滚。
    事务回滚的典型例子就是银行事务,比如转账,转到一半的事务突然断电,那么数据库是系统就应该回滚,恢复原来的状态。否则,你的钱转走了,而对方又没有收到,那就哭死了T_T。

    SQL:1999允许将多条语句组成单一事务,用begin atomic……end括起。
    例如(伪代码):

    #@@error是全局变量,能获取上一条SQL是否发生错误的信息
    begin atomic
    INSERT INTO department
        VALUES ('design','tylor',400000)
    如果(@@error)rollback atomic
    end
    commit atomic;
    

    不要问笔者为什么不写具体代码,因为笔者测试用的是mysqlT_T(我丢,不支持)。

    相关文章

      网友评论

        本文标题:SQL——事务

        本文链接:https://www.haomeiwen.com/subject/mmfkhftx.html