SQLite插入,如果不存在,则更新


SQLite insert if not exists else update

所以我在这里看到了一些类似的问题,但我就是无法理解。

我的桌子:

'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');

我不必担心逃避和验证,这已经完成了我只需要一个能做到这一点的声明。:)

如果您在表上设置了唯一键,那么您可以首先进行插入,如果出现错误,则记录重复性,然后捕获它们并进行更新。这通常比一些先如何存在的行更快,然后再做它的更新。

为colomn clientguid创建UNIQUE索引然后tou可以使用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)