代码之家  ›  专栏  ›  技术社区  ›  Mark

如何避免插入重复记录?

  •  3
  • Mark  · 技术社区  · 15 年前

    但是,我真的想确保我不插入重复的对象(对象有一个日期戳,它使它们成为唯一的,我希望用它进行唯一性检查)。我真的不想循环每个对象,做一个提取,然后插入如果没有发现,因为这将是非常糟糕的性能。。。

    我想知道有没有更简单的方法?也许是我记忆中的某个对象的“分组依据”????有可能吗?

    3 回复  |  直到 12 年前
        1
  •  5
  •   Marcus S. Zarra    15 年前

    你的问题已经有答案了。您需要循环它们,查找它们,如果它们存在,则更新;否则插入。没有别的办法了。

    [myFetchRequest setPredicate:[NSPredicate predicateWithFormat:@"timestamp in %@", myArrayOfIncomingTimestamps]];
    

    这将为您提供所有已存在的处于故障状态的对象。然后可以对该数组运行内存中谓词来检索现有对象以更新它们。

    还有,一句忠告。时间戳是一个非常独特的ID。我会的 高度地

        2
  •  1
  •   tc.    15 年前

    时间戳不是唯一的。但是,我们假设您有唯一的id(例如UUID/GUID/随便什么)。

        3
  •  0
  •   Shaggy Frog    15 年前

    你怎么知道一张唱片是重复的?您有主键还是其他唯一键?(您应该)检查该键——如果它已经存在于存储中的实体中,则更新它,否则插入它。