在SQLite中,在一个语句中增加计数器或插入行
发布时间:2020-12-12 19:04:23 所属栏目:百科 来源:网络整理
导读:在SQLite中,给出这个数据库模式 CREATE TABLE observations ( src TEXT,dest TEXT,verb TEXT,occurrences INTEGER);CREATE UNIQUE INDEX observations_index ON observations (src,dest,verb); 每当一个新的观察元组(:src,:dest,:verb)进入时,我想为该元
在SQLite中,给出这个数据库模式
CREATE TABLE observations ( src TEXT,dest TEXT,verb TEXT,occurrences INTEGER ); CREATE UNIQUE INDEX observations_index ON observations (src,dest,verb); 每当一个新的观察元组(:src,:dest,:verb)进入时,我想为该元组的现有行增加“出现次数”列,如果没有,则添加一个新的行,如果出现次数= 1已经有一个具体伪码: if (SELECT COUNT(*) FROM observations WHERE src == :src AND dest == :dest AND verb == :verb) == 1: UPDATE observations SET occurrences = occurrences + 1 WHERE src == :src AND dest == :dest AND verb == :verb else: INSERT INTO observations VALUES (:src,:dest,:verb,1) 我想知道是否可以在一个SQLite语句中执行此操作.这将简化应用程序逻辑(需要完全异步wrt数据库操作),并且还避免使用完全相同的键的双重索引查找. INSERT或REPLACE似乎不是我想要的,而且没有UPDATE或INSERT. 我从Igor Tandetnik得到了这个关于sqlite用户的答案:INSERT OR REPLACE INTO observations VALUES (:src,COALESCE( (SELECT occurrences FROM observations WHERE src=:src AND dest=:dest AND verb=:verb),0) + 1); 它略微但总是比dan04的方法更快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |