2014-10-04 72 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

相关问题