我找到了一些经典的"将来"的解决方案,如果它已经存在,我将如何插入新记录或更新一个记录,但我无法让它们在SQLite中工作.
我有一个表定义如下:
CREATE TABLE Book
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Name VARCHAR(60) UNIQUE,
TypeID INTEGER,
Level INTEGER,
Seen INTEGER
Run Code Online (Sandbox Code Playgroud)
我想要做的是添加一个具有唯一名称的记录.如果名称已存在,我想修改字段.
有人可以告诉我该怎么做?
如果行已经存在,我想更新行的列,但如果它还不存在,那么我想插入一个新行.
这种类型的问题通常适用于SQL
特别是SQLite
我正在尝试通过使用SQLite.swift包装器来开发iOS 来节省开发时间.我选择了这个框架,因为它是在raywenderlich.com上推荐的.我认为有一个更新或插入语法的示例会很有用.
在这个答案中,Sam Saffron说:
如果你一般都在做更新,我会..
- 开始交易
- 做更新
- 检查rowcount
- 如果为0则执行插入操作
- 承诺
如果你通常做插入我会
- 开始交易
- 尝试插入
- 检查主键冲突错误
- 如果我们得到错误,请进行更新
- 承诺
这样你就可以避免选择,并且你在Sqlite上具有事务性.
这对我来说很有意义,所以在下面我的回答中,我提供了一个"通常做更新"的例子.