如果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 GO 3 /****** Object: Trigger [dbo].[tr_s_user_change_update] Script Date: 04/27/2019 10:31:22 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 ALTER trigger [dbo].[tr_s_user_change_update] --觸發器名稱 9 on [dbo].[s_user] --表名 10 for update 11 as 12 declare @time datetime 13 set @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='張三' where id=3 and last_update='2019-04-27 10:09:02.297'
此時數據庫已經修改如下,修改name為張三的同時,last_update也更新為當前的時間:
B用戶:
此時,我們還可以做一些其他的處理,提示用戶"當條數據已被更新,請退出后重新操作"等等。