Database 比较并仅向sqlite数据库插入新记录

Database 比较并仅向sqlite数据库插入新记录,database,sqlite,insert,Database,Sqlite,Insert,我有sqlite本地数据库。我只想将新数据从远程服务器插入本地数据库。由于没有时间字段,很难只插入新记录。我如何才能做到这一点?我的混合移动应用程序需要这个。有什么帮助吗?…提前谢谢 两张表: 我的本地数据库表是 tbl_orders id name age 1 yyy 30 2 xxx 20 tbl_orders id name age 1 yyy 36 2

我有sqlite本地数据库。我只想将新数据从远程服务器插入本地数据库。由于没有时间字段,很难只插入新记录。我如何才能做到这一点?我的混合移动应用程序需要这个。有什么帮助吗?…提前谢谢

两张表:

我的本地数据库表是

tbl_orders
 id      name      age
  1       yyy       30
  2       xxx       20
tbl_orders
 id      name      age
 1       yyy       36
 2       xxx       20
 3       vvv       40
 4       zzz       37
我的远程数据库表是

tbl_orders
 id      name      age
  1       yyy       30
  2       xxx       20
tbl_orders
 id      name      age
 1       yyy       36
 2       xxx       20
 3       vvv       40
 4       zzz       37

在上面的示例中,远程表还包含两条记录,并且第一条记录(年龄列)中的值也发生了更改。现在,我想在不删除和重新插入整个表的情况下,将其(即第1、第3、第4)插入并更新到本地sqlite表中。

您的表是在两个DB中复制的吗

如果是,您可以在WHERE条件中使用NOT EXISTS子句进行插入。或者,在源表中添加datetime字段

另一种方式: 在源数据库(fl_sent)中添加一个布尔字段,在数据库中创建新行或更新它们时由触发器填充。默认值为false,并且当您想要同步您的DBs时,您的选择基于此字段

SELECT * FROM myTable WHERE fl_sent = 0
要获得更完整的答案,请张贴表格

评论后编辑:

解决方案1: 在远程表(源)中添加字段日期(如果需要,可以编写一个关于切换此字段的触发器),然后根据此日期执行可发送查询

解决方案2:
添加由零设置的字段标志(fl_sent)(如果需要,您可以编写一个关于切换此字段的触发器),然后根据此标志执行可发送查询。

您应该在
id
中添加一个
唯一的
约束

重新定义本地表:

CREATE TABLE tbl_orders(UNIQUE id, name, age);
或者不重新定义表

CREATE UNIQUE INDEX tbl_orders_id ON tbl_orders(id);
使用CONSTRIND,您的更新将成为一条语句:

INSERT OR REPLACE INTO local.tbl_orders SELECT * FROM remote.tbl_orders;

您的本地表相对于远程表是完全从属的吗?(阅读您的样本是)