日期:2014-05-18  浏览次数:20735 次

两表关联,外键引用,经常失效
HI,各位,背景是这样的:

  有两个A、B表,表A有三个字段(AID int identity,AName varchar(100),ACode varchar(100)),B表外键引用A表的主键AID;每当B表增加数据时,都会先判断传入的AName、ACode是否存在,不存在时插入到A表并返回AID,存在时直接返回ID,得到AID后再做后续操作;

  A表数据不会超过2K,起初我将A表放到内存缓存中,测试时正常,但是在实际运行时,判断操作经常失效,程序直接将AName、ACode插入到A表中,A表出现很多重复数据,数据量稳定在2W-3W左右。

  之后我将A表的查询和插入操作的逻辑搬到存储过程,类似的情况还是会出现。

  在开发测试、或访问量小的时候,逻辑执行是正常的,但是访问量一上去就很郁闷了。

  这种情况是什么问题,谁有碰过,帮忙解答一下,谢谢。

------解决方案--------------------
并发情况下,因为不知道其他进程已将相同AName、ACode的值插入表A,

所以认为还不存在, 所以继续插入咯.
------解决方案--------------------
解决方法是提高事务隔离等级,

------解决方案--------------------
AName、ACode

你把这个弄一个唯一约束不就不可能重复了吗
------解决方案--------------------
A表做唯一约束
------解决方案--------------------
应该是程序逻辑有问题