在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、状态)中插入或忽略值(?“活动”);