找回密码
 立即注册

QQ登录

只需一步,快速开始

小萝卜

初级会员

4

主题

4

帖子

236

积分

初级会员

积分
236
  • 604

    金币

  • 4

    主题

  • 4

    帖子

小萝卜
初级会员   /  发表于:2021-11-3 11:50  /   查看:3597  /  回复:7
5金币
本帖最后由 小萝卜 于 2021-11-3 13:32 编辑

在前端页面中,如果同一条数据,同时被两个人修改,后一个提交的人会提示,“当前行已经被其他人编辑”。

前端命令效果:
如果使用服务端命令修改数据,前端不会有类似的提示。
服务端命令效果:

请问在服务端命令中如何实现类似的效果。


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

我们可以在服务端命令中手动实现前端页面的逻辑。 1.给表增加一个version数字类型字段,可以设置一个默认值0或者1,每次更新数据的时候,更新一下version,把version加1; 2.在更新数据的服务端命令中添加一个version参数,更改的数据的时候,传入此时version的值; 3.在服务端命令中,先用ID查询出数据库中当前的version,与我们传入的version做对比。 如果version一致,则表示数据未被修改。我们此时可以更新数据,记 ...

评分

参与人数 1满意度 +5 收起 理由
鸿渐于磐 + 5

查看全部评分

7 个回复

倒序浏览
最佳答案
最佳答案
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-3 11:50:58
来自 3#
我们可以在服务端命令中手动实现前端页面的逻辑。
1.给表增加一个version数字类型字段,可以设置一个默认值0或者1,每次更新数据的时候,更新一下version,把version加1;

2.在更新数据的服务端命令中添加一个version参数,更改的数据的时候,传入此时version的值;

3.在服务端命令中,先用ID查询出数据库中当前的version,与我们传入的version做对比。

如果version一致,则表示数据未被修改。我们此时可以更新数据,记得更新数据的同时,更新version,把version加1。

如果version不一致,则表示数据已被修改。我们此时可以直接返回一个错误,并写好错误信息。

4.在调用更新数据服务端命令的时候,传入当前version的值~

运行效果:

工程文件:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
凯神Jump悬赏达人认证 活字格认证
中级会员   /  发表于:2021-11-3 13:23:29
2#
在页面调用服务器端命令时,将原来的值传给服务器端命令,在服务器端命令中查询当前行的值,与原值不一样,则返回错误。

评分

参与人数 1金币 +5 收起 理由
David.Zhong + 5 很给力!

查看全部评分

回复 使用道具 举报
又cai又ai玩
注册会员   /  发表于:2022-3-28 15:20:04
4#
David.Zhong 发表于 2021-11-3 11:50
我们可以在服务端命令中手动实现前端页面的逻辑。
1.给表增加一个version数字类型字段,可以设置一个默认 ...

虽然增加了一个字段,但是方法真挺好的,且服务端的参数只需要传一遍,在从新从数据库获取一下version值就可以,完成是否修改的比对了,点赞
回复 使用道具 举报
又cai又ai玩
注册会员   /  发表于:2022-3-28 15:29:07
5#
凯神Jump 发表于 2021-11-3 13:23
在页面调用服务器端命令时,将原来的值传给服务器端命令,在服务器端命令中查询当前行的值,与原值不一样, ...

方法存在一点小问题,就是本来就是修改页面,如何保证从页面上获取的值就是没有修改前的旧值,而不是即将更新的新值。因此页面上还应该存在一个一模一样的但是不能被修改的数据,且这些数据应该隐藏起来不被看到,增加了页面的容量。

且当修改的字段多的时候,所有需要修改的字段都会传两遍,一遍是旧值(即就是隐藏的没有修改的值),一遍是新值(修改后但是没有更新到数据库的值),增加了前后端的数据交互量,不建议使用。
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-3-28 16:04:00
6#
又cai又ai玩 发表于 2022-3-28 15:29
方法存在一点小问题,就是本来就是修改页面,如何保证从页面上获取的值就是没有修改前的旧值,而不是即将 ...

回复 使用道具 举报
feichunhuan
金牌服务用户   /  发表于:2023-6-29 16:09:37
7#
David.Zhong 发表于 2021-11-3 11:50
我们可以在服务端命令中手动实现前端页面的逻辑。
1.给表增加一个version数字类型字段,可以设置一个默认 ...

这里通过一个version参数来控制,存在另外一个问题,同一个用户如果不退出重新加载页面数据直接做第二次更新都会提示该数据正在被他人编辑,对当前用户操作来说不够友好也容易产生误解,有没有更好的解决方案?谢谢!
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2023-6-29 17:55:01
8#
大佬,不退出重新加载页面直接做第二次修改是什么意思呢
这里修改完成的话,会直接触发页面跳转命令,重新加载数据的哈



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部