2014-10-04 69 views
0

所以我在這裏看到一些類似的問題,但我無法理解它們。SQLite插入如果不存在其他更新

我的表:

'timestamp' int(30) NOT NULL, 
'clientguid' varchar(32) NOT NULL, 
'clientip' varchar(32) NOT NULL, 
'serverip' varchar(32) NOT NULL) 

我有4個變量

$TimeStamp 
$ClientGUID 
$ClientIP 
$ServerIP 

我的查詢應該這樣做: 如果沒有與clientguid完全匹配的行$ClientGUID

UPDATE 'mytablename' 
SET 'timestamp' = '$TimeStamp','clientip' = '$ClientIP','serverip' = '2.2.2.24' 
WHERE 'mytablename'.'clientguid' = '$ClientGUID'); 

如果沒有匹配的行:

INSERT INTO 'mytablename' ('timestamp','clientguid','clientip','serverip') 
VALUES($TimeStamp,'$ClientGUID', '$ClientIP', '$ServerIP'); 

我不必擔心逃避和驗證,這已經完成 我只是需要將實現此一說法。 :)

+0

該職位是SQL Server 2008中,沒有SQLite的:P – dotNNJ 2014-10-04 15:29:55

+0

或http://計算器。 com/questions/418898/sqlite-upsert-not-insert-or-replace ......................... – edelwater 2014-10-04 15:29:56

+0

然後請參閱@ edelwater的重複建議。 ..看起來你不是第一個問過這個問題的人...搜索是你的好朋友;) – webeno 2014-10-04 15:31:06

回答

0

如果你在你的表上設置了唯一鍵,那麼你可以先插入它,如果錯誤重複記錄然後抓住它們並且更新它。這通常更快然後一些如何第一次存在的行,然後做它更新。

-1

創建colomn一個唯一的指標clientguid 然後土特產品可以使用INSERT ....對重複密鑰更新

INSERT INTO yourtable (timestanp, clientguid,clientip, serverip) 
VALUES(NOW(), $clientguid, '$clientip', '$serverip') 
ON DUPLICATE KEY UPDATE 
    timestamp = NOW(), 
    clientip = VALUES(clientip), 
    serverip = VALUES(serverip) 
+0

這在SQLite中不起作用。 – 2014-10-04 20:28:20

相關問題