2 xuxiaoyinliu xuxiaoyinliu 于 2016.04.30 21:23 提问

JAVA两个部署在不同服务器上的程序访问同一个表,如何避免同时向这个表中插入数据 ?

JAVA两个部署在不同服务器上的程序访问同一个表,如何避免同时向这个表中插入数据 ?刚写了个程序发现存在这个问题,原以为这种概率不会太高,但还是存在,怎么解决?谢谢

2个回答

Meditator_hkx
Meditator_hkx   Rxr 2016.04.30 22:23

其实和进程互斥的原理应该是一样的吧,在某一服务器访问该公共表的时候加锁,并同步更新数据至所有可达服务器,这样别的服务器也有访问请求时,就会等锁解开再进行。加锁的服务器程序应负责在释放资源后解锁。

xuxiaoyinliu
xuxiaoyinliu   2016.04.30 21:49

情况是这样的,现在要对供货商进行加款,只要满足余额<阈值 就申请加款,但只要这个供货商有未处理完成的加款申请,就不能再有新的申请,加款程序在插入申请时会去数据库中查询有没有未处理完成的请求,如果有则放弃,单程序运行时没有任何问题,但是多个同时运行时就出现了同时申请的问题,记录重复,请问该怎么解决这个问题?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
多台应用同时操作一张表数据,解决并发问题
遇到的问题:多台应用部署调度任务,同时扫一张表的数据,并且对一张表的数据进行操作,可能出现的问题是一条数据被操作了两次,从而出现了并发性的问题。 解决办法:从sql上解决问题,并且限制查询条数。 例:假设三台应用部署调度任务。 对数据表的主键取余,若是被除数配置为4,则所有的余数为0,1,2,3。所以需要保证每台应用所执行的sql里面刚好包含这4个数字。当然需要在程序里面根据配置文件
同一服务器上不同数据库之间同步表数据
在同一个服务器上有两个数据库A和B,现在想取B数据库中的某个表中的数据插入到A中,做法是: 1、首先在A数据库中建立一个dblink,其中testLink是dblink名字随便取,username跟password都是B数据库的登录名跟密码; create public database link testLink connect to username identified BY p
service同时向两张表插入数据
前面提到表结构的优化分离,商品分为基本属性表和商品描述表 当前端新增商品的时候提交基本属性的同时也提交了商品描述表。controller写成如下形式: @RequestMapping("item") @Controller public class ItemController { @Autowired private ItemService itemService;
在一条SQL语句中向2个表中插入数据解决方案
在一条SQL语句中向2个表中插入数据 表1   名称Bulletin,字段BulletinId(主键),Title,Content,Publisher  表2   名称ButtetinAuth,字段BulletinId(主键),UserId  怎么在一条SQL语句中想2个表中插入数据  请写具体点  2条SQL语句也可以,但要同步  create PROCE
如何同时向两张表插入记录
sql语句中很难写或者没有同时插入两张表的sql语句,解决办法是在xml里写两个insert  sql语句,执行两个插入方法: parameterClass="TB0005_SNIMDT"> insert into TB0005_SNIMDT(snpccd,fltp,flspun,flclpr,flcltm,flsc,brfl,rm,flnm)  values(#snpccd#,#f
多线程并发,同时执行一个表,避免数据缺失
FileSystemWatcher fileSystemWatcher1 = new FileSystemWatcher();//文件监控  public static object locker = new object();              ThreadPool.SetMinThreads(1, 1);//设置线程最小数量                 Thread
使用Insert Select实现同时向多个表插入记录
<br />使用Insert Select实现同时向多个表插入记录<br /><br /><br /><br />一、无条件 INSERT ALL<br /><br /><br />---------------------------------------------------------------------------------------------<br /><br /><br />INSERT ALL<br /><br /><br />insert_into_clause values_
mysql 2个服务器之间访问数据
这两个服务器的中数据库是独立的?如果是,要用FEDERATED 存储引擎 示例: 在host: 168.56.41.11建个FEDERATED 表  CREATE TABLE xxx_b (      id    INT(20) NOT NULL AUTO_INCREMENT,      username  VARCHAR(32) NOT NULL DEFAULT '',     
mysql将多个表的多个数据插入到同一张表
工作需要将二十多个表的两个字段同时插入到一张总表中,网上找了不少资料,终于测试完成了 直接上图吧 这里加了count(*)是因为有时候当天的数据没有,这样只查sales字段就不会有数据,所以加个count(*就有返回结果了,但是后面又发现问题,如果a表当天没有数据,在上面sum求和的时候有null值就不会有结果,所以在上面要加上ifnull来判断是否ifnull来判断,如下图
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁? 数据库目前的锁机制有没有办法解决这种并发问题 关注者 13 被浏览 652 添加评论 分享 邀请回答 关注问题写回答