我有一个数据库,其中包含两个不同类文件的名称和属性,这些文件在服务器发送到客户端后填充。所以我想做的是这样的事情:
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;
但是不起作用。
有没有办法做到这一点? 谢谢!
答案 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 ...");
...
}
我不认为这个选项是正确的,因为我认为应该有一个“更复杂的方法来做到这一点。 如果有人提出任何建议,欢迎。 谢谢,