高併發情況下使用者處理同一條資料解決方法

2022-03-25 05:27:25 字數 1730 閱讀 3952

如果2個及以上的使用者同時開啟一條資料,並修改資料,提交後會造成資料衝突。

資料庫表字段

假設現在有2個使用者都已經開啟同一條資料,並且顯示的資料都是id:1;name:張三;age:15;

a使用者

b使用者

現在我們假設使用者a先操作,使用者b後操作,此時資料庫儲存的資料為

使用者a沒有對該記錄進行操作沒有生效。

下面提供乙個解決方案,在資料庫中新增乙個字段:last_date

s_user表結構

s_user表資料

關鍵點:給當前表寫乙個觸發器,當對表修改時,更新last_update更新時間

1

use[

demo_test]2

go3/****** object: trigger [dbo].[tr_s_user_change_update] script date: 04/27/2019 10:31:22 ******/4

set ansi_nulls on5go

6set quoted_identifier on7go

8alter

trigger

[dbo

].[tr_s_user_change_update]--

觸發器名稱9on

[dbo

].[s_user]--

表名10

forupdate

11as

12declare

@time

datetime

13set

@time

=getdate

()14

update s_user set last_update=

@time

where id =(select id from inserted) --

where id 更新的主鍵

此時當我們對當前記錄修改時,新增乙個約束條件

a使用者:

1

update s_user set name='張三

b使用者:

此時,我們還可以做一些其他的處理,提示使用者"當條資料已被更新,請退出後重新操作"等等。

高併發情況下扣除庫存鎖表情況

toc 1.鎖表情景 查詢條件沒有索引時 總結起來就是兩個嚴重問題 1.扣庫存時沒走索引 2.在事務中,調第三方介面 sql create table gap id int,age int,primary key id select from gap insert into test gap id ...

併發情況下synchronized死鎖

存在缺陷的 public class datapropertyidandnamerepositoryimpl integer standardid 0 mappropertyidmap propertyidlocalcache.get dataid if propertyidmap null ret...

併發情況下synchronized死鎖

存在缺陷的 public class datapropertyidandnamerepositoryimpl integer standardid 0 mappropertyidmap propertyidlocalcache.get dataid if propertyidmap null ret...