SQLite c#-在没有主键或唯一键的情况下进行插入或更新

8 浏览
0 Comments

SQLite c#-在没有主键或唯一键的情况下进行插入或更新

假设我有两个数据库文件,主数据库和新数据库。每当发布新的数据库文件时,用户需要从新数据库更新主数据库。

  1. 如果找到某一行,如CustomerName相同,则需要更新主数据库中的旧记录。
  2. 如果没有找到,则需要将新记录插入到主数据库。

我尝试的方法是从新数据库中选择所有行,然后使用reader.Read()逐行进行遍历。在循环内部,我将检查如果update sql返回-1,则执行insert sql。

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

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

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

0