MySQL 4.1.0 中文参考手册 --- 6.7 MySQL 事务与锁定命令[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 shuixin13 的 blog

mysql 4.1.0 中文参考手册 --- 犬犬(心帆)翻译

mysql reference manual for version 4.1.0-alpha.


6.7 mysql 事务与锁定命令

6.7.1 begin/commit/rollback 句法

缺省的,mysql 运行在 autocommit 模式。这就意味着,当你执行完一个更新时,mysql 将立刻将更新存储到磁盘上。

如果你使用事务安全表 (例如 innodbbdb),通过下面的命令,你可以设置 mysql 为非 autocommit 模式:

set autocommit=0

在此之后,你必须使用 commit 来存储你的更改到磁盘上,或者使用 rollback ,如果你希望忽略从你的事务开始所做的更改。

如果你希望为一系列语句从 autocommit 模式转换,你可以使用 start transactionbeginbegin work 语句:

start transaction;
select @a:=sum(salary) from table1 where type=1;
update table2 set summmary=@a where type=1;
commit;

start transaction 在 mysql 4.0.11 中被加入;这是被推荐的开始一个特别(ad-hoc)事务的方式,因为这是 ansi sql 句法。

注意,如果你使用的是一个非事务安全表,更改会立刻被存储,不受 autocommit 模式状态的约束。

当你更新了一个非事务表后,如果你执行一个 rollback,你将得到一个错误 (er_warning_not_complete_rollback) 作为一个警告。所有事务安全表将被恢复,但是非事务安全表将不会改变。

如果你使用 start transactionset autocommit=0,你应该使用 mysql 二进制日志做备份以代替老的更新日志。事务处理被以一个大块形式存储在二进制日志中,在 commit 上面,为了保护回滚的事务,而不是被存储的。查看章节 4.9.4 二进制日志。 如果您使用起动事务处理或集autocommit=0 ,您应该使用mysql 二进制日志为备份代替更旧的更新日志。 事务处理存储在二进制登录一大块,做,保证, 滚的事务处理不存储。 参见部分4 。9.4 二进制日志。

下列命令自动的结束一个事务 (就好像你在执行这个命令之前,做了一个 commit):

命令 命令 命令
alter table begin create index
drop database drop table rename table
truncate    

本文关键:MySQL 4.1.0 中文
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top