0
我有如下表:如何插入如果不存在,或增加,如果存在SQLite?
CREATE TABLE 'Test' ('Id' INTEGER PRIMARY KEY NOT NULL, 'Val' INTEGER)
如果給定的ID不存在,我想用默認瓦爾插入的ID。但如果它已經存在,我想增加Val的價值。
我有這樣的代碼:
$data = array(':id'=>$id);
$stmt = $db->prepare('INSERT INTO Test (Id, Val) Values(:id, 1);');
if(!$stmt->execute($data)){
$stmt = $db->prepare('UPDATE Test SET Val=Val+1 WHERE Id=:id');
$stmt->execute($data);
}
和它的作品,但我想用一個SQL語句來做到這一點。我可以嗎?
編輯:
從@ Xikinho90的回答,我的最終代碼是
$stmt = $db->prepare('
INSERT OR REPLACE INTO Test (Id,Val)
VALUES ( :id, COALESCE((SELECT Val + 1 FROM Test WHERE id = :id), 1) )
');
$stmt->execute(array(':id'=>$id));