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

数据库并发问题
背景:
  调用第三方函数向数据库插入一条记录。然后用SQL更新这条记录。
语言:
  C# VS2008
  
   
问题:
   
  用SQL去更新,刚才第三方函数创建出来的记录。发现受影响的记录为0。发现更新的时候记录还没有创建出来。

  1.调用第三方函数,需要过一段时间,新记录才在数据库中创建出来。
  2.第三方函数,调用成功了就返回了,并没有在数据库中数据创建完时返回。
  3.只能通过第三方函数创建数据。

  求大神有啥好的方法,暂时想到的只有定时查询数据库是否有数据创建出来有的话更新。但是如此会牺牲性能。
 

------解决方案--------------------
用触发器,
SQL code

create trigger tr_tab on tab
after insert
as
begin
  update a
  set [...]
  from tab a
  inner join inserted b
  on a.[主键]=b.[主键]
end

------解决方案--------------------
1、是再创建以后就更新么? 既然这样,为什么不在第三方函数把更新后的数据一起创建好,然后插入到数据库,这样就不存在还要判断的问题。
2、如果不能修改第三方函数的话,那么如果还是在数据插入以后就更新,那么可以考虑使用触发器;
------解决方案--------------------
支持2楼的看法
------解决方案--------------------
插入成功返回什么?可以先判断返回标记,如果表示成功再用sql修改记录。