sqlite3 - INSERT上的条件

时间:2015-03-28 11:59:18

标签: sqlite

我有一个数据库,其中包含两个不同类文件的名称和属性,这些文件在服务器发送到客户端后填充。所以我想做的是这样的事情:

CASE
    WHEN (SELECT Count() FROM files_table_1 WHERE id="some id") IS NOT 0
        THEN (UPDATE files_table_1 SET(...) WHERE id="some id")
    ELSE (INSERT INTO files_table_2 (...) VALUES(...))
    END;

但是不起作用。

有没有办法做到这一点? 谢谢!

2 个答案:

答案 0 :(得分:0)

对于这样的情况,C ++有关键字if

bool ok = query.exec("UPDATE ...");
...
if (query.numRowsAffected() == 0) {
    ok = query.exec("INSERT ...");
    ....
}

答案 1 :(得分:0)

按照@CL。评论,似乎没有办法在一个独特的sqlite stament上运行这个命令,所以我会这样:

SELECT CASE
    WHEN (SELECT Count() FROM files_table_1 WHERE id="some id") IS 1 THEN 1
    WHEN (SELECT Count() FROM files_table_2 WHERE id="some id") IS 1 THEN 2
    ELSE -1 END;
query.next();

if(query.value(0).toInt() == 1)
{
    query.prepare("UPDATE file_table_1 SET ...");
    ...
}
else if(query.value(0).toInt() == 2)
{
    query.prepare("UPDATE file_table_2 SET ...");
    ...
}
else if(query.value(0).toInt() == -1)
{
    query.prepare("INSERT INTO file_table_2 ...");
    ...
}

我不认为这个选项是正确的,因为我认为应该有一个“更复杂的方法来做到这一点。 如果有人提出任何建议,欢迎。 谢谢,