作者:kanliyan_857 | 来源:互联网 | 2022-12-23 16:15
我用c#+sqlite 做了一个多线程更新的程序。
数据库字段如下:
id(主键,自增字段) , itemid (货物id) ,checkedtime( 检查时间 ), a区销售额 , b区销售额
注: itemid (货物id) ,checkedtime( 检查时间 ) 这两个字段建立了索引(唯一键);( 就是说无论何时表里面的 itemid (货物id) ,checkedtime( 检查时间 ) 这两个字段同时相同的只有一条数据。)
我想实现的功能:
程序使用2个线程处理同一批itemid,itemid对应不同区的销售额。
a线程先判断表里面是否存在itemid,如果不存在itemid的话则插入itemid、checkedtime、
a区销售额 ,如果存在itemid则更新a区销售额。
b线程先判断表里面是否存在itemid,如果不存在itemid的话则插入itemid、checkedtime、
b区销售额 ,如果存在itemid则更b区销售额。
目前我使用的语句:
a线程的语句
REPLACE INTO itemdetails(itemid,checkedtime,a区销售额 ) VALUES('256','2014-3-22','2300');
b线程的语句
REPLACE INTO itemdetails(itemid,checkedtime,b区销售额 ) VALUES('256','2014-3-22','5700');
遇到的问题:
当a线程先执行,插入了itemid为256和a区销售额的一行数据 ,如:
itemid (货物id) ,checkedtime( 检查时间 ), a区销售额 , b区销售额
256 2014-3-22 2300
此时b线程再执行时,会直接把itemid为256的数据删除掉,然后再插入itemid为256和b区销售额的一行数据 ,变成了:
itemid (货物id) ,checkedtime( 检查时间 ), a区销售额 , b区销售额
256 2014-3-22 5700
但是我需要的是, b线程在保留a区销售额的情况下,更新b区销售额,如:
itemid (货物id) ,checkedtime( 检查时间 ), a区销售额 , b区销售额
256 2014-3-22 2300 5700
请问应该如何实现?程序原先使用了mysql数据库,在mysql数据库里面我使用了存储过程来实现这个功能,但是现在程序使用了sqlite,没有存储过程,不知道如何实现了。谢谢大伙指点!
1 个解决方案