我的一个表中有一列我试图通过C ++中的sqlite3中的UPDATE查询进行更新。 使用v3.8.10.2 合并sqlite3。
我可以将此值设置为我想要的任何值,但是我不能增加它。 该值从0开始。一旦我递增它,它递增到1。之后,如果我再次尝试递增它,它不会递增并且它保持为1。 如果我用8这样的值替换值1也是如此。它保持在8,不会更高(即使它应该变为16)。
char* query = "UPDATE THETABLE SET ATTEMPTS = ATTEMPTS + 1 WHERE TESTFIELD = 'Hello';"
int error = sqlite3_exec(db, query.c_str(), NULL, 0, &errMsg);
if(error != SQLITE_OK){
//This doesn't happen, error is = to SQLITE_OK
cout << "SQL Error: " << error << " message: " << errMsg << endl;
sqlite3_close(db);
return;
}
cout << "Updated value!" << endl;
我在Windows中通过命令提示符控制台使用完全相同的查询,它可以工作,它会递增。在C ++中,它保持为1.为什么?
修改 我也试过这个问题:
&#34;更新可用的设置ATTEMPTS = +1在哪里TESTFIELD =&#39;你好&#39;;&#34;
同样的,它被困在1.不会再高了。
编辑2: 以下是该列的架构:
&#34; ATTEMPTS INTEGER DEFAULT 0,&#34;
这是sqlite3 C ++实现中的错误吗?
答案 0 :(得分:1)
问题是当我最初添加一行时,我正在做:
插入或替换
我没有设置该字段的值,我原以为它不会被触及但是确实如此,它被设置为默认值0。
我把它改为:
INSERT或IGNORE
现在有效。