首页 文章

SQLite c# - 没有主键或唯一键的INSERT或UPDATE

提问于
浏览
0

可以说我有2个数据库文件,主数据库和新数据库 . 每次发布新数据库文件时,用户都需要从新数据库更新主数据库 .

  • 如果找到某一行,例如CustomerName相同,然后我需要更新主数据库中的旧记录 .

  • 如果找不到,那么我需要在主数据库中插入新记录 .

我尝试过的是从新数据库中选择所有行,然后使用reader.Read()逐行查看 . 在循环内部,我将检查更新sql是否返回-1,然后我将执行insert sql .

上面的方法存在性能问题,因为它需要遍历每一行来执行更新或插入 . 我建议的解决方案是将新数据库附加到主数据库中,然后执行“INSERT或REPLACE表SELECT * FROM newdatabase.table” .

但很快我意识到了一个问题 . 我实际上没有表中的主键,或者主键无助于决定INSERT或REPLACE . 这是由于某些特定的客户要求 . 在这种情况下,我不能在没有主键的情况下使用INSERT或REPLACE,例如要比较的列(CustomerName)不是唯一键或主键 .

如果您有更好的解决方案,请告诉我,谢谢!

1 回答

  • -1

    要插入缺少的行 - 并使用附加的数据库 - 您可以执行以下操作:

    插入Table1(col2,col3,...)选择col2,col3,...
    来自newdatabase.Table1,其中customername不在(从Table1中选择customername)

    这假设col1是主要的自动增量ID . 您需要命名除此col1之外的所有列 . 对于更新,请使用'customer name in'执行类似的更新命令 .

相关问题