MySQL 4.1.0中文参考手册——6.7 MySQL事务与锁定命令(转)

  MySQL 4.1.0中文参考手册——6.7 MySQL事务与锁定命令(转)[@more@] <时尚>代码tt{颜色:紫色}{颜色:绿色}桑普{颜色:海军}{颜色:栗色}之前       MYSQL 4.1.0中文参考手册">    "内容=" MySQL, 4.1.0, Shuixin13, MySQL 4.1.0,中文,中文参考手册,犬犬(心帆)"> <链接href=" https://www.yisu.com/zixun/shuixin13.ico " rel="快捷方式图标"> <链接href=" https://www.yisu.com/zixun/images/index.css " type=" text/"> CSS样式表rel=>   <标题> MySQL版本4.1.0-alpha参考手册。   

  

  <人力资源>      

6.7 MySQL事务与锁定命令

  

6.7.1 <代码>开始/提交/回滚代码句法

  

  

缺省的,MySQL运行在<代码>自动提交模式。这就意味着,当你执行完一个更新时,MySQL将立刻将更新存储到磁盘上。

  

如果你使用事务安全表(例如<代码> Innodb ,<代码> BDB> 模式:

  

设置自动提交=0

 之前
  

在此之后,你必须使用<代码>提交> 回滚代码>   

如果你希望为一系列语句从<代码>自动提交模式转换,你可以使用<代码>开始事务代码或<代码>开始或<代码>开始工作>   

开始交易;选择@A:=SUM(工资)从表1类型=1;更新表设置summmary=@A类型=1;提交;

 
  

<代码>开始事务>   

注意,如果你使用的是一个非事务安全表,更改会立刻被存储,不受<代码>自动提交模式状态的约束。

  

当你更新了一个非事务表后,如果你执行一个<代码>滚> ER_WARNING_NOT_COMPLETE_ROLLBACK>   

如果你使用<代码>开始事务代码或<代码>设置自动提交=0> 提交上面,为了保护回滚的事务,而不是被存储的。查看章节4.9.4二进制日志。如果您使用起动事务处理或集AUTOCOMMIT=0,您应该使用MySQL二进制日志为备份代替更旧的更新日志。事务处理存储在二进制登录一大块,做,保证,滚的事务处理不存储。参见部分4 .9.4二进制日志。

  

下列命令自动的结束一个事务(就好像你在执行这个命令之前,做了一个<代码>提交> <>强命令 <>强命令 <>强命令 <代码> ALTER TABLE <代码> <代码>开始创建指数 <代码>删除数据库代码 <代码> DROP TABLE <代码> <代码>截断重命名表> 你可以使用<代码>设置事务隔离级别……> 设置事务>   

6.7.2 <代码> 句表锁定/解锁表法

  

  

锁表tbl_name[作为别名]{(本地)|阅读(LOW_PRIORITY)写}[,tbl_name[作为别名]{(本地)|阅读(LOW_PRIORITY)写}…)……打开表

 
  

<代码> 为锁表当前线程锁定表。 <代码>解锁表释放当前线程拥有的所有锁定。当线程发出另一个<代码> 锁定表,或当与服务器的连接被关闭时,被当前线程锁定的所有表将被自动地解锁。

  

为了在MySQL 4.0.2使用<代码> 锁定表,你必须拥有一个全局的<代码> 锁表权限和一个在相关表上的<代码> 选择权限。在MySQL 3.23中,你对该表需要有<代码>选择,<代码>插入,<代码>删除和<代码> 更新权限。

  

使用<代码> 锁表的主要原因是,仿效事务处理或在更新表时得到更快的速度。此后会有更详细的描述。

  

如果一个线程在一个表上得到一个<代码> 读锁,该线程(和所有其它线程)只能从表中读取。如果一个线程在一个表上得到一个<代码> 写锁,那么只有拥有这个锁的线程可以从表中读取和写表。其它的线程被阻塞。

  

<代码>读当地的和<代码>读之间的不同就在于,当锁被加载时,<代码>读当地的允许非冲突(无)

MySQL 4.1.0中文参考手册——6.7 MySQL事务与锁定命令(转)