多个客户端数据更新到同一个数据库服务器,如何避免新数据重复呢?

2018-01-07 22:42:20 +08:00
 MrMike

如题。客户端数量不定,会不定期将本地数据更新到同一个数据库服务器,也会将新的数据从服务器上更新下来。所以,如何避免同一个表里不同客户端提交的数据(新增,更新,删除)不重复呢?

4005 次点击
所在节点    MySQL
9 条回复
akira
2018-01-07 23:09:14 +08:00
本地做个唯一字段啊
litter123
2018-01-07 23:14:54 +08:00
数据量少的话,直接先查后差啊
shoaly
2018-01-08 09:22:05 +08:00
关键词 数据库 锁.
jy02534655
2018-01-08 10:15:42 +08:00
先插入再去重
yujieyu7
2018-01-08 10:36:22 +08:00
唯一索引
MrMike
2018-01-08 13:30:08 +08:00
@jy02534655
@yujieyu7 针对同一个表,客户端在新增了数据后,再更新到远程服务器,如何避免 ID 重复的情况呢?
moonfly
2018-01-08 14:07:18 +08:00
@MrMike 主键 ID 通常不都是由数据库自增更新的吗?不会由客户端来插入一个 ID ; ID 已经存在的话,就只能更新这条记录,不能再插入同样 ID 的记录了;
客户端要更新(非插入)新的数据要避免重复,那就需要另外的方法来避免重复了;
最好的方式还是在插入之前先检查是否有重复;
MrMike
2018-01-08 14:25:19 +08:00
@moonfly 客户端和服务器端各自有相同字段的表,数据先在客户端保存在本地,然后再手动或者定时的方式推送到服务器端,同时将服务器端的新数据更新到客户端。
moonfly
2018-01-08 15:33:31 +08:00
@MrMike 我觉得你这种场景,你应该还是需要一个中间件来进行逻辑处理,然后再统一在服务器上写库吧;
或者在表中增加一个字段,记录每一个客户端的唯一标识;然后每个客户端要(增删改)的时候都只针对自己的记录进行;查可以查所有的;

不然多个客户端都直接更新服务器上的同一个表,还没有约束和限制,那是无法避免冲突的,而且数据也会被搞乱的吧;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/420888

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX