MySql 中 Transaction 与 Lock

autocommit:

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

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+

1 row in set (0.00 sec)

 (@@autocommit是全局变量)

 

事务

mysql> start transaction;
mysql> select @a:=sum(sal) from emp where deptno=18;
mysql> update t set sumsal=@a;

mysql> commit;

(在mysql中用户变量表示为:@var_name;  赋值: set @x=2; 或者 @x :=2;)


隐式提交:

像DDL语句是自动提交的,事务中不要包含这些语句。 还有一些命令也是自动结束一个事务: set autocommit=1; begin ; lock table; start transaction ; create index; rename table; truncate table ....  (windows 中按住shift再删除文件时,不会放入回收站。)

 

回滚点(save point):

rollback ; 会回滚到start transaction;  如果设置savepoint xxx, 则可以回滚到指定地方: rollback xxx;


锁:

lock tables 表名 [read] [write] , 表名[read] [write] ......

unlock tables

例如:

mysql> lock tables trans read, customer write;

mysql> ...............

mysql> unlock tables;

你可能感兴趣的:(transaction)