SQLite插入如果不存在则更新

时间:2014-10-04 15:12:14

标签: php sql sqlite insert

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

我的表:

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

我不必担心逃避和验证,这已经完成了 我只需要一个能够实现这一目标的声明。 :)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

为列客户端ID创建UNIQUE索引 然后你可以使用INSERT .... ON DUPLICATE KEY UPDATE

INSERT INTO yourtable (timestanp, clientguid,clientip, serverip)
VALUES(NOW(), $clientguid, '$clientip', '$serverip')
ON DUPLICATE KEY UPDATE
    timestamp = NOW(),
    clientip = VALUES(clientip),
    serverip = VALUES(serverip)
相关问题