1,事务的概念
- mysql> start transaction
- -> ;
- Query OK, 0 rows affected (0.00 sec)
- mysql> insert into user values(null,'456','456',now());
- Query OK, 1 row affected (0.06 sec)
- mysql> insert into user values(null,'789','789',now());
- Query OK, 1 row affected (0.00 sec)
在这里执行了两条插入语句,但是这两个语句实际上还没有插入进去了,因为第三步还没有完成, 你可以理解为这些数据暂时存放在缓存里
- mysql> commit
- -> ;
- Query OK, 0 rows affected (0.05 sec)
这个时候 上面的插入操作才算是真正的插入到了表中
- mysql> select * from user;
- +----+----------+----------+---------------------+
- | id | username | password | createtime |
- +----+----------+----------+---------------------+
- | 1 | kenan | kenan | 2012-10-31 15:32:26 |
- | 3 | kenan | lele | 2012-10-31 15:32:26 |
- | 4 | lele | lele | NULL |
- | 5 | 1 | 1 | NULL |
- | 9 | 123 | 123 | 2012-11-05 18:35:02 |
- | 10 | 456 | 456 | 2012-11-05 21:16:29 |
- | 11 | 789 | 789 | 2012-11-05 21:16:40 |
- +----+----------+----------+---------------------+
- 7 rows in set (0.00 sec)
- 使用这个SQL语句可以查看autocommit的值,autocommit是mysql中的一个变量
- 结果显示autcommit是开着的
- mysql> show VARIABLES like '%autocommit%';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | autocommit | ON |
- +---------------+-------+
- 1 row in set (0.00 sec)
- mysql> set autocommit = 1;
- Query OK, 0 rows affected (0.00 sec)
- 使用这个语句可以将autocommit关闭,执行的sql语句不会自动提交,遇到错误,所有的操作不会影响的数据库
- mysql> set autocommit = 0;
- Query OK, 0 rows affected (0.00 sec)
- mysql> show VARIABLES like '%autocommit%';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | autocommit | OFF |
- +---------------+-------+
- 1 row in set (0.00 sec)
还没有人抢沙发呢~