-1

我有 sqlite 本地数据库。我只想将来自远程服务器的新数据插入本地数据库。由于没有时间字段,因此很难仅插入新记录。我怎样才能做到这一点?我的混合移动应用程序需要这个。任何帮助apperciated..提前谢谢。

两张表:

我的本地数据库表是

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 表而不删除和重新插入整张桌子。

4

2 回答 2

0

您的表在两个数据库中复制?

如果是,您可以在 WHERE 条件下使用 NOT EXISTS 子句执行 INSERT。或者,在源表中添加日期时间字段。

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

SELECT * FROM myTable WHERE fl_sent = 0

如需更完整的答案,请发布您的表格。

评论后编辑:

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

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

于 2013-08-29T09:29:05.350 回答
0

您应该UNIQUEid.

重新定义本地表:

CREATE TABLE tbl_orders(UNIQUE id, name, age);

或不重新定义表

CREATE UNIQUE INDEX tbl_orders_id ON tbl_orders(id);

有了约束,你的更新就变成了一条语句:

INSERT OR REPLACE INTO local.tbl_orders SELECT * FROM remote.tbl_orders;
于 2013-08-29T10:25:19.060 回答