我有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
在上面,远程表还包含两个记录,并且第一个记录(年龄列)中的值也被更改。现在我想插入并更新此(即第1,第3,第4)到我的本地sqlite表而不删除并重新插入整个表格。
答案 0 :(得分:0)
您的表格是在两个DB中复制的吗?
如果是,您可以在WHERE条件中使用NOT EXISTS子句执行INSERT。或者,在源表中添加datetime字段。
另一种方式: 在源数据库(fl_sent)中添加一个布尔字段,在数据库中创建新行或更新它们时由触发器填充。默认值为false,当您要同步数据库时,您的选择基于此字段
SELECT * FROM myTable WHERE fl_sent = 0
如需更完整的答案,请张贴您的表格。
评论后编辑:
解决方案1: 在远程表(源)中添加字段日期(如果需要,可以编写一个触发器来切换此字段),然后根据此日期执行可发送查询。
解决方案2: 添加由零设置的字段标志(fl_sent)(如果需要,可以编写一个触发器来切换此字段),然后根据此标志执行可发送的查询。
答案 1 :(得分:0)
您应在UNIQUE
中添加id
约束。
重新定义本地表:
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;