2013-08-29 161 views
-1

我有sqlite本地數據庫。我只想從遠程服務器向本地數據庫插入新數據。由於沒有時間字段,因此很難只插入新記錄。我該如何實現這一目標?我需要這個爲我的混合移動應用程序。任何幫助apperciated ..提前感謝。比較並只插入新的記錄到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 

在遠程表上面包含了另外兩個記錄,並在值第一個記錄(年齡列)得到改變。現在我想插入並更新這個(即第一,第三,第四)到我的本地sqlite表而不刪除並重新插入整個表。

+0

你的本地表是完全從尊重到遠程桌面? (讀你的樣品是) –

回答

0

您的表格被複制到兩個數據庫中?

如果是,您可以在WHERE條件下使用NOT EXISTS子句執行INSERT。或者,在源表中添加datetime字段。

另一種方式: 在源數據庫(fl_sent)中添加一個布爾型字段,在數據庫中創建新行或更新它們時由觸發器填充。默認值是假的,當你想你的syncronize你的DB的選擇是基於該領域

SELECT * FROM myTable WHERE fl_sent = 0 

更完整的答案,請發表您的表。

編輯後評論:

解決方案1: 添加字段日期在遠程表(源)(如果你願意,你寫一本關於撥動這個領域觸發),然後執行您可發送的查詢基於這個日期。

解決方案2: 添加由零設置的字段標誌(fl_sent)(如果需要,可以編寫關於切換此字段的觸發器),然後根據此標誌執行可發送的查詢。

+0

我張貼了我的表格。 – kesavan

+0

我不明白填充觸發器!它是如何完成的? – kesavan

0

您應該在id中添加UNIQUE限制。

重新定義你的本地表:

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;