在sqlite3中切换值

在sqlite3中切换值,sqlite,Sqlite,我的表格有一个名为status的列,数据类型为CHARACTER。我希望做到以下几点 如果主键的行不存在,请在中插入“活动” 状态。如果行中已有主键条目,请切换 状态。使用ative,not_active值进行切换 目前,我通过编写多个查询来实现这一点。有没有像Mysql这样的单一查询可以做到这一点?SQLite没有像IF这样的控制逻辑命令,因为在嵌入式数据库中这是没有意义的 使用访问数据库时使用的任何语言实现控制逻辑: db.begin\u事务() result=db.execute(“从My

我的表格有一个名为
status
的列,数据类型为
CHARACTER
。我希望做到以下几点

如果主键的行不存在,请在中插入“活动”
状态
。如果行中已有主键条目,请切换
状态
。使用
ative
not_active
值进行切换


目前,我通过编写多个查询来实现这一点。有没有像Mysql这样的单一查询可以做到这一点?

SQLite没有像IF这样的控制逻辑命令,因为在嵌入式数据库中这是没有意义的

使用访问数据库时使用的任何语言实现控制逻辑:

db.begin\u事务()
result=db.execute(“从MyTable中选择状态,其中id=?”,[id]);
如果result.length>0:
新状态=如果结果[0][0]=“活动”:“未活动”否则:“活动”
execute(“updatemytable SET status=?WHERE id=?”,[new_status,id])
其他:
execute(“插入MyTable(id,status)值(?,,,,[id,'active']))
db.commit()
但是,切换逻辑本身可以用实现,因此如果您不太关心清楚性,可以按以下顺序执行以下两个命令(如果记录不存在,
更新
将不起任何作用,如果新记录违反任何唯一约束,
将不起任何作用):

更新MyTable
设置状态=案例状态
当“活动”时,则“不活动”
其他“活动”
结束
其中id=?;
在MyTable(id、状态)中插入或忽略值(?“活动”);