注意:mysql数据支持事务,但是要求必须是innoDB存储引擎
GRANT:授予访问权限
REVOKE:撤销访问权限
COMMIT:提交事务处理
ROLLBACK:事务处理回退
SAVEPOINT:设置保存点
LOCK:对数据库的特定部分进行锁定
start transaction / begin:开启事务
事务的ACID特性:
原子性(Atomicity):原子意为最小的粒子,或者说不能再分的事物。数据库事务的不可再分的原则即为原子性。 组成事务的所有SQL必须:要么全部执行,要么全部取消(就像上面的银行例子)。
一致性(Consistency):在事务前/后应保持一致
隔离性(Isolation):某个事务的操作对其他事务不可见
持久性(Durability):事务提交完成后,其影响应该保留下来,不能撤消
如何使用事务:
(1)在执行sql语句之前,我们要开启事务 start transaction;
(2)正常执行我们的sql语句
(3)当sql语句执行完毕,存在两种情况:
1,全都成功,我们要将sql语句对数据库造成的影响提交到数据库中,committ
2,某些sql语句失败,我们执行rollback(回滚),将对数据库操作赶紧撤销
数据库事务的隔离性:
同时运行多个事务(多线程并发),当这些事务访问相同数据库时,如果没有采取隔离机制,就会导致各种问题。(共享数据的问题)
脏读:更新事务却没有提交,之后,回滚事务,读取的内容就是临时且无效的
不可重复读:两个事务,一个更新并提交了该字段,起一个再次读取同一个字段,值就不同了
幻读:一个事务在该表中插入或删除一些行,之后,另一事务再去读取同一个表,就会多出或少了几行