当前位置:  开发笔记 > 前端 > 正文

如果有两个或更多条件,如何在SQLite中使用REPLACE命令

如何解决《如果有两个或更多条件,如何在SQLite中使用REPLACE命令》经验,为你挑选了1个好方法。

我想更新一行,如果它存在于表中,否则在单个查询中将其插入SQLite中.从SQLite文档中我发现我们可以使用REPLACE命令来实现这一目标.

REPLACE如果有两个或更多条件,我想知道如何使用:

示例:
如果我有TABLE1包含以下记录的表:

  Name   Type   InitialValue  FinalValue
   A      1          20           40
   B      2          23           50
   A      3          40           60
   C      3          54           70 

这里的组合NameType将是独一无二的.

我想设置initialvalue = 50finalvalue = 90 在那里name = AType = 3 如果它存在,否则将其插入.

我正在使用此命令,但它给出了此错误:

REPLACE INTO table1(Name,Type,InitialValue,FinalValue)VALUES('A',3,50,90)WHERE Name ='A'AND Type = 3;

错误是:

"WHERE"附近:语法错误无法执行语句

我怎样才能实现目标?请帮忙.



1> jackdoe..:

replace就像insert一样,它只是检查是否有重复的键,如果它是删除行,并插入新的,否则它只是插入

如果存在(名称,类型)的唯一索引并且键入以下命令,则可以执行此操作

REPLACE INTO table1 (Name,Type,InitialValue,FinalValue) VALUES ('A',3,50,90 )

并且已存在Name ='A'且Type = 3的行将被替换

http://www.sqlite.org/lang_createindex.html

CREATE UNIQUE INDEX idx_name_type ON table1(Name,Type)

编辑:快速说明 - REPLACE总是DELETES然后INSERT,所以在重负载中使用它永远不是一个好主意,因为它删除时需要独占锁定,然后插入时

一些数据库引擎有

INSERT ... ON DUPLICATE KEY UPDATE ...

sqlite 3没有,但如果插入失败,你可以尝试try}} catch

http://blog.client9.com/2007/11/sqlite3-and-on-duplicate-key-update.html

SQLite UPSERT - ON DUPLICATE KEY UPDATE

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有