多语言展示
当前在线:1001今日阅读:75今日分享:44

关系型数据库如何保证数据的一致性

关系型数据库和菲关系型数据库最大的区别就在于关系型数据库可以保证数据的一致性,即可以保证一系列操作的原子行,那么如何保证数据的一致性呢,今天就以mysql为例来为大家介绍下
工具/原料

mysql

方法/步骤
1

首先我们打开shell或者其他命令窗口也可以,创建好两张表,两张表中均只有一个id和一个name,如下

2

这时候我们写两条插入语句,第一条插入test,第二条插入test2,然后第二条语句让他报错:

3

这时候我们去查询一下两张表,我们会发现test表数据插入进去了:

4

那么我们如何保证两张表数据一致呢,要么同时成功,要么同时失败。其实只要保证两条语句在同一个事务里面就可以了,而mysql默认是自动提交事务的,也就是说执行完一条sql就自动提交了,然后再执行第二条。如下,@@autocommit=1表示自动提交

5

我们通过set autocommit=0把@@autocommit改为0,然后查询发现这时候已经变为0了

6

接下来我们再来执行2条插入语句,也是一条成功一条失败,然后我们重新打开一个数据库连接(不能再原有连接上面看),这里为了方便,就再用工具去连接了,然后去查询test表,我们会发现,test表提示插入成功的数据其实并没有成功,查出来依然只有之前插入的一条数据

7

这是因为我们把自动提交关闭了,mysql并没有把数据提交,所以其他人是看不到的,这时候我们手动commit一下事务,然后再去查看,这时候就会发现数据可以查出来了,通过这个事务我们就可以控制数据一致,假如我们发现事务中有某一条数据失败,我们就不提交,而选择rollback,就可以实现数据回滚,从而实现数据一致性

注意事项

手动开启事务后,需要手动调用commit,如果发现某一条语句失败,调用rollback回滚即可

推荐信息