› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
MrMike
V2EX  ›  MySQL

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

  •  
  •   MrMike · Jan 7, 2018 · 4724 views
    This topic created in 3224 days ago, the information mentioned may be changed or developed.

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

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

    不然多个客户端都直接更新服务器上的同一个表,还没有约束和限制,那是无法避免冲突的,而且数据也会被搞乱的吧;
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1726 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:22 · PVG 01:22 · LAX 09:22 · JFK 12:22
    ♥ Do have faith in what you're doing.