数据库之事务及索引

学习问题:一次记录了多个保留点,但是出错多的话,要怎样才能在同一事务中同时解决呢。                   浅尝辄止哈哈
事务命令

-- start transaction 开启事务 -- Rollback 回滚事务,即撤销指定的sql语句(只能回退insert delete update语句),回滚到上一次commit的位置 -- Commit 提交事务,提交未存储的事务 -- -- savepoint 保留点 ,事务处理中设置的临时占位符 你可以对它发布回退(与整个事务回退不同)     
create table test2(id int PRIMARY KEY auto_increment,name VARCHAR(20)) engine=innodb;

创test2表格>>设置主键>>字符类型为varchar类型>>数据库引擎使用innodb引擎(可事务)。

INSERT INTO test2(name) VALUE ("alvin"),
                              ("yuan"),
                              ("xialv");



start transaction;
insert into test2 (name)values('silv');
select * from test2;
commit;

  插入数据>>start transaction为开始事务命令>>插入新数据>>commit为提交未存储事务

start transaction;
insert into test2 (name)values('wu');
savepoint insert_wu;
select * from test2;



delete from test2 where id=4;
savepoint delete1;
select * from test2;

 开始事务>>插入数据>>savepoint insert_wu 为保留点>>delete1同上

rollback to delete1;

  回滚事务,好了之后select 再查看下

注意事项:回滚后,事务会自动被退出。所以之后再rollback to  delete2 等会提示失败。

百度:

事务

1> 原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

<2> 一致性(Consistency):事务前后数据的完整性必须保持一致。在事务执行之前数据库是符合数据完整性约束的,无论事务是否执行成功,事务结束后的数据库中的数据也应该是符合完整性约束的。在某一时间点,如果数据库中的所有记录都能保证满足当前数据库中的所有约束,则可以说当前的数据库是符合数据完整性约束的。
比如删部门表前应该删掉关联员工(已经建立外键),如果数据库服务器发生错误,有一个员工没删掉,那么此时员工的部门表已经删除,那么就不符合完整性约束了,所以这样的数据库也就性能太差啦!

<3>隔离性(Isolation):事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。

<4>持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

猜你喜欢

转载自www.cnblogs.com/liyongqiang888/p/11835307.html