zoukankan      html  css  js  c++  java
  • 高并发情况下用户处理同一条数据解决方法

      如果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用户:

    此时,我们还可以做一些其他的处理,提示用户"当条数据已被更新,请退出后重新操作"等等。

    后续的业务处理,还需自己扩展,这只是解决方案的一种。如果您现在有更好的方法,欢迎到下方评论留言~~~

  • 相关阅读:
    uva-11361
    HDU
    LCS
    CodeForces
    linux 有趣的命令组合
    opencv识别封闭区域 并标记该区域
    宜出行人口热力图
    美团酒店
    赶集租房
    发送企业微信应用通知
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/10777944.html
Copyright © 2011-2022 走看看