我正在使用SQLite来维护一个数据库,其中包含一个带路径的表。该表的CREATE语句如下所示
CREATE TABLE path (id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
UNIQUE(name));
我正在寻找一种简短的方法来说'将这个给定的路径插入到路径表中,然后给我分配它的ID,或者只是在SQL中已经存在的情况下给我ID。
现在,我正在使用多个SQL语句(前面的伪代码):
unsigned int getIdForPath(p) {
result = exec("SELECT id FROM path WHERE name='$p';");
if result.empty {
exec("INSERT INTO path VALUES(NULL, '$p');");
result = exec("SELECT last_insert_rowid() FROM path;");
}
return result.toInt();
}
所以,我首先想查找id;如果它似乎不存在,我添加一个新条目,最后再做一个SELECT来获取最近使用的id。这似乎有点笨拙,可能效率低下。
是否有更紧凑和/或更有效的方法来实现这种逻辑?
更新:常见的情况是条目已经存在,因此上述伪代码中的初始SELECT将在大多数情况下找到结果。< / p>