2 xingyuxinmeng xingyuxinmeng 于 2016.04.08 14:52 提问

数据库同时修改同一条数据冲突问题,急!!!!!!

现在有两段程序要修改同一条数据,如果第一段程序正在对这条数据进行修改,而此时第二段程序也在运行,也要对这条数据进行修改,但是这两段程序对这条数据修改的字段不同,
,而我现在遇见的问题是第一段程序修改的数据只修改了一部分,其他的字段数据没有更新,这样是什么问题?

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.08 15:04

如果你的读值,更新都是在一条sql语句中实现的,不用考虑任何问题,否则可以使用事务包裹整个更新过程,这样数据库会加锁,确保修改是顺序执行的。

CSDNXIAON
CSDNXIAON   2016.04.08 15:04

同一服务器上不同数据库之间同步表数据
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
如何避免多人并发时办理同一条数据
问个问题:就是如何避免多人并发时办理同一条数据,这条数据是办理完成后就会消失。而且,当一个人办理时,别人是看不见这条数据的。我运行时,出现了多人同时办理这一条,数据库出现死锁。 回答: 第一  锁机制 第二  脚本里参数化成一条数据只能用一次 第三  程序校验正在update的数据 前台无法在进行操作
多用户同时处理同一条数据解决办法
事务处理(多用户同时操作一条信息时是用-并发) 在c/s或多层中,如果两个用户同时打开一条记录,修改后提交会产生更新冲突; 据说办法有二:1。打开同时锁定表的记录 2。浦获错误,撤消其中一个用户的修改,但是很少见到具体实现的代码;请大家告诉具体的代码怎么写: 1。打开时如何锁定一条记录? 2。如何扑获更新错误?在delphi中调试时会报“该记录读出后已经被再次修改”,而在运行时如何判
多用户并发操作一条记录的锁定机制
在网络系统实际开发中,经常会碰到这种情况: 多个登陆用户可能会同时修改同一条记录 这样可能会发生: 1) a用户在加载完记录后,b修改保存了数据,对于a来说他的数据被覆盖了; 2)a用户看到的是相对于b修改后比较旧的数据 通常解决办法是设置悲观锁和乐观锁 悲观锁的优点是保证了数据不丢失和一致,缺点是降低了性能; 乐观锁的优点是增加了程序可操作性和可移植性,提高了并发性能,缺点是需要控
多个用户同时修改同一数据解决办法
package cn.pra.curr;public class TestPro { public static void main(String[] args) { Exce e1 = new Exce(new Test("a")); // 修改数据时将字符串换成修改数据的唯一标识 Exce e2 = new Exce(new Test("a2")); Exce e3 = new Exce...
软件开发者面试百问-----在Web应用中,你怎样避免几个人编辑同一段数据所造成的冲突?
在Web应用中,你怎样避免几个人编辑同一段数据所造成的冲突?多人编辑同一条数据的情况应该是比较多的,为了避免出现数据不一致的情况,我们需要想办法避免这样的情况(聒噪结束)一般有下面两个办法:1。编辑前加锁(悲观锁)2。编辑后提醒(乐观锁)对于第一种方法,就是在当前用户编辑数据初始化之前,判断当前数据是不是已经被别人锁定。如果已经被锁定,那么提醒用户,当前数据被其他人编辑,并且让页面只读。如果没有其
数据库单条记录并发读并更改问题
场景有1G的流量,很多人要占用这个流量进行充值。 数据库解决方案方案1:select for update事务控制,即用一个事务来包裹上面的SELECT+UPDATE操作,UPDATE/DELETE SQL尽量带上WHERE条件并在WHERE条件中设定索引过滤条件,否则会锁表,性能可想而知有多差了。方案2: 乐观锁1、从数据库表A,获得数据,记录乐观锁lock 2、业务操作 3. updat
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁? 数据库目前的锁机制有没有办法解决这种并发问题 关注者 13 被浏览 652 添加评论 分享 邀请回答 关注问题写回答
分布式程序防止多用户对同一数据更新问题
在分布式程序中经常遇到多个用户对同一数据的更新,虽然数据库中对更新操作加了锁,防止同时更新的问题,但是也可能会存在数据被重写的问题。比如:用户a 对学生表的name字段进行修改,用户b对学生表的age进行修改,它们是同时执行的。因为我们对更新加了锁,所以假如A执行,b等待,当a执行了后,b开始执行,由于b提交的数据中包含了name字段,所以对a修改的name值也修改了。所以就照成了数据的重写。
多线程共享数据的更新的解决办法
一个线程负责取数据,每次new 一个新的buffer,接收全量或者增量数据,用一个临时指针指向之前正在使用的数据,新的buffer加载好后,将使用数据的全局指针指向新的buffer,(在切换成新指针的时候加上写锁,其他的地方加上读锁)再delete 临时指针(释放老的数据),这个方法在我之前的一个项目中运行很长时间重来没有出现过问题,这样实现了共享数据只在切换的时候加上写锁,其他地方只有读锁,显著的减少了锁竞争,和锁粒度。实现了数据更新的无缝切换。此方案在数据一致性要求非常严格的场景并不适应,只是适应不经常
Oracle多用户同时修改同一记录,怎样保证该客户记录
首先你要了解什么叫做 “事务 transcation ” :一个事务包含一个或多个DML语句,是逻辑管理的工作单元(原子单元)。 注意:其中Commit, Rollback是显示的提交事务,而DDL语句是隐式的提交事务的。DDL语句的操作是没有办法回滚的。当用户对数据进行修改时(DML操作),oracle会给数据分配两个 锁 ,一个是行排他锁 另一个是表共享锁行排他锁:如果A用户对某个表的某一行