Asp.net中数据并发如何处理?

Asp.net中数据并发如何处理?,第1张

你的ID不是自动增长的那种?如果不是那你就算一个表也得考虑并发啊 假定你用的是SQL Server如果你的ID是自动增长的, 那使用 SCOPE_IDENTITY() 来返回, 如下declare @newId intinsert into table_A (column1, column2) values(v1, v2)select @newId = SCOPE_IDENTITY()insert into table_B (idcolumn, column3, column4) values (@newId, v3, v4)select @newId /* add this line if you want use the new id in your C# code */ 如果你的ID不是这样的, 那你得用事务, 然后锁表了, 建议单开一个表用来存储最后一个ID值。declare @newId intselect @newId = NextId from identity_log with (UPDLOCK) where tablename = 'table_A'insert into table_A ...insert into table_B ...UPDATE identity_log set NextId = @newId + 1 where tablename = 'table_A' 这段代码要运行在事务中, 推荐使用 SqlTransaction 或 TransactionScope当然也以把以上的SQL改一下, 加个 begin tran, rollback tran, commit tran, 并正确使用 if(@@error <>0)

1、数据库有主键。插入数据不会出现你说的什么错误或不稳定吧

2、调用sql对数据库修改本身是自动上锁的。

如果要保证程序逻辑的一致性需要使用事务。

3、比如主键递增这种情况,或者只要是有主键。

4、程序无论用什么方式,都不可能在数据库中插入两条主键相同的记录。

5、同时多人使用,是否包括一种情况:同时多人修改(包括删除)。如果仅仅是同时多人添加,那么毫无问题。不会有并发问题

6、如果存在同时多人修改的可能性的话,那就需要用“开放式并发”或“非开放式并发”。

7、开放式并发”相对简单。即:一个人修改并提交,被告知原始数据已被修改,则报错自己找找这方面资料吧,VS与.NET已经集成了一些简单实现的方法。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/808672.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-29
下一篇2023-08-29

发表评论

登录后才能评论

评论列表(0条)

    保存