假设一个表结构MyTable(KEY, datafield1, datafield2...)
.
通常我想要更新现有记录,或者如果新记录不存在则插入新记录.
实质上:
IF (key exists)
run update command
ELSE
run insert command
Run Code Online (Sandbox Code Playgroud)
写这个的最佳表现方式是什么?
可能重复:
Oracle:如何UPSERT(更新或插入表?)
嗨,
我有一个表,如果记录已经存在,则必须修改该记录,否则必须插入新记录.Oracle sql不接受IF EXISTS
,否则我会做一个if - update - else - insert
查询.我看过MERGE
但它只适用于多个表.我该怎么办?
如果行已经存在,我想更新行的列,但如果它还不存在,那么我想插入一个新行.
这种类型的问题通常适用于SQL
特别是SQLite
我正在尝试通过使用SQLite.swift包装器来开发iOS 来节省开发时间.我选择了这个框架,因为它是在raywenderlich.com上推荐的.我认为有一个更新或插入语法的示例会很有用.
在这个答案中,Sam Saffron说:
如果你一般都在做更新,我会..
- 开始交易
- 做更新
- 检查rowcount
- 如果为0则执行插入操作
- 承诺
如果你通常做插入我会
- 开始交易
- 尝试插入
- 检查主键冲突错误
- 如果我们得到错误,请进行更新
- 承诺
这样你就可以避免选择,并且你在Sqlite上具有事务性.
这对我来说很有意义,所以在下面我的回答中,我提供了一个"通常做更新"的例子.
我想在条件满足时将值插入表的1列.
注意:该表已包含所有列的数据,但是1表示为空.我想根据WHERE子句将值插入此1列.
我有这个问题:
INSERT INTO <TABLE_NAME>
(COLUMN_NAME)
(VALUE)
WHERE <CONDITION>
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
WHERE关键字附近的语法不正确
我可以使用UPDATE执行此操作:
UPDATE <TABLE_NAME>
SET <COL_NAME>
WHERE <CONDITION>
Run Code Online (Sandbox Code Playgroud)
但是想知道为什么INSERT查询失败了.任何建议表示赞赏.