如果我没有错,可以在Oracle中使用“INSERT OR UPDATE”语句。如果主键不存在,则可以创建新行,否则更新该行。或者只能使用某些存储过程或存储函数?
答案 0 :(得分:6)
MySQL的:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
对于SQLite,您将使用ON CONFLICT REPLACE
- 请参阅http://www.sqlite.org/lang_conflict.html
REPLACE当一个UNIQUE约束时 发生违规,REPLACE 算法删除预先存在的行 导致约束的 插入之前违反或 更新当前行和 命令继续正常执行。 如果违反NOT NULL约束 发生,REPLACE冲突 resolution替换NULL值 使用该列的默认值, 或者如果列没有默认值, 然后使用ABORT算法。如果一个 发生CHECK约束违规, REPLACE冲突解决算法 总是像ABORT一样。
当REPLACE冲突解决时 策略删除行以便 满足约束,删除触发器 当且仅当递归触发时触发 已启用。
未调用更新挂钩 REPLACE删除的行 冲突解决策略。也没有 REPLACE增加更改计数器。 中定义的特殊行为 本段可能会改变 未来发布。