• mysql-笔记 事务 锁 语句


    Start Transaction 或 begin [work] 开始一个事务,开始一个事务,引起其他未提交的事务提交,引起表锁释放

    commit 提交事务,永久修改

    rollback 回滚事务,撤消修改

    set autocommit 在当前会话状态下 启用或不启用 autocommit ,在当前会话中启作用

    使用start transaction autocommit 不可用,直到事务结束,autocommit 恢复到先前状态

    一些语句不能回滚 数据定义语句:create or drop database create drop alter table 或存储规则

    savepoint identifier 保存点-如果已存在 则删除旧的生成新的

    rollback [work] to [savepoint] identifier 回滚到保存点 不结束事务

    release savepoint identifier 释放保存点 从当前事务中的保存点集合中删除保存点,不提交不回滚。如果不存在 则提示出错

    如果执行 没有使用保存点的 commit /rollback没有使用保存点,则删除当前事务中的所有保存点。

    调用函数或触发触发器时生成一个新的保存点级别,之前的保存点不可用。当调用函数或触发器结束时,新的保存点 被释放,之前的保存恢复可用状态

    ---------------------------------------------------------------------------------------------------------

    lock tables tbl_name {read | write} 可以在当前客户端会话中 锁定表 一个会员不能获取其他会话的锁或释放其他会话的锁

    unlock tables 释放当前会员中的锁,在获取一个新的锁时会隐式释放当前会员中的所有的表锁,释放全局读取锁

    flush tables with read lock;

    start transaction ; select * from t1; unlock tables;

    锁可以模拟事务 或 加快更新表的速度

    表锁可基于表或视图。

    使用 flush tables with read lock 可以锁定所有数据库中的所有表

    需要锁的会员需要获取所有需要的锁在lock tables 语句中。使用锁定时,会员只能使用锁定的表。如:

    lock tables t1; select * from t1; select * from t2;提示出错

    不能在同一查询语句中用同一名称引用一个锁定的表,可以使用别名代替

    loct table t write,t as t1 read; insert into t select * from t as t1;

    如果锁定时使用别名,引用时也必须使用别名

    loct table t as myalias read; select * from t as myalias;

  • 相关阅读:
    spring 心跳更新
    eclipse 控制台输出太多,显示不完整
    String
    iOS 开发之如何生成SDK(2)-----生成framework
    如何防止自己的APP被Hook
    JavaAPI类
    Java面向对象三大特性—封装
    Java类与对象
    Java基础易错点1
    Java数组反转及二维数组
  • 原文地址:https://www.cnblogs.com/caojuansh/p/11158322.html
Copyright © 2020-2023  润新知