1 2 3 4 5
| Transaction(事务) 原子性(Atomicity)确保工作单元内的所有操作都能成功完成。如若不然,事务在遭受失败时就会被放弃,之前的种种操作就会被撤销回它们之前的状态。 一致性(Consistency)确保数据库能够在成功提交的事务的基础上正确改变状态。 隔离性(Isolation)使事务能够独立操作,事务之间彼此透明。 持久性(Durability)确保当系统发生失败时,已提交的事务的结果或者说效果能够持续存在。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| BEGIN或START TRANSACTION;显式地开启一个事务;
COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;
ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
SAVEPOINT identifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;
RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;
ROLLBACK TO identifier;把事务回滚到标记点;
SET TRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。 通过设定会话变量 AUTOCOMMIT 可以控制事务行为。如果 AUTOCOMMIT 被设为1(默认值),则每一个 SQL 语句(无论是否在事务中)都会被认为是一个完成的事务,则默认当它结束时予以提交。当 AUTOCOMMIT 被设为0(通过命令 SET AUTOCOMMIT=0)时,后续一系列语句就像是一个事务,直到 COMMIT 语句执行为止,不再提交任何行为。
|
今天写的一些脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
select * from left_join_result where tutorial_count = NULL; select * from left_join_result where tutorial_count != NULL;
select * from left_join_result where tutorial_count is NULL; select * from left_join_result where tutorial_count is not NULL;
select tutorial_title from left_join_result where tutorial_title REGEXP "^Ass"; select tutorial_title from left_join_result where tutorial_title REGEXP "d$";
create table transaction_test( id int(5) not null, primary key (id) ); begin; insert into transaction_test (id) values (5); insert into transaction_test (id) values (66); commit;
rollback;
select name, count(*) from asshole group by name;
update asshole set length=0; alter table asshole modify length bigint(30) not null default 100;
|