如果只有一条SQL数据,那么可能不用考虑数据的完整性,只要考虑下逻辑是否正确就可以了。比如说给张三加100元不要加到李四头上就行。
如果在同一个库里,对两张表或者多张表同时进行修改的话,那么用事务来控制下,这样也可以保证数据的完整性,要么都成功了,要么都不成功。
现在难题是,数据嘛不在同一个数据库里,而数据库嘛又不在同一个服务器上。这样的话就比较坑爹了,但是又难免不会出现这样的情况。
如果遇到这样的情况,各位是如何来保证数据的完整性的?
很多时候,比如说,改完A服务器上的A库,需要接着改B服务器上的B库,结果在A库成功后,B库失败了,因此数据也不完整了。
求各位大侠分享下各自遇到的这些坑爹的情况都是怎么解决的...谢谢哈
如上面几位所说,使用分布式事务可以完美解决这个问题,我之前就处理过。
参考:http://wangqingpei557.blog.51cto.com/1009349/748799
DTS 分布式事务
我觉得你想复杂了,比如Oracle就是可以把另一个服务器的库,当作自己的库来访问,通过数据库链路。就算不这么做,当用存储过程(匿名存储过程)执行时,也是要么全成功,要么全失败。如果加事务控制,也可以在存储过程里加回滚,以及一些事务控制语句。
这个问题,不能依赖应用程序编程语言,尽量使用数据库编程,个人觉得最容易,最安全。否则,访问次数太多不说,事务也不太容易控制……
DTS 分布式事务,可以解決N個不同的鏈接的數據庫,事務問題。
分布式事务