MySQL 或 SQLite 是否支持“插入或更新”?声明?

发布于 2024-11-09 11:49:20 字数 92 浏览 0 评论 0原文

如果我没记错的话,“INSERT OR UPDATE”语句在 Oracle 中可用。如果主键不存在,则可以创建新行,否则可以更新该行。或者只能使用某些存储过程或存储函数?

The "INSERT OR UPDATE" statements are available in Oracle if i am not wrong. The possibility to create a new row if the primary key doesn't exists or update that row otherwise. Or is it only possible using some Stored Procedure or Stored Function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

负佳期 2024-11-16 11:49:20

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

onconflict - 请参阅 http://www.sqlite.org/lang_conflict.html

REPLACE 当 UNIQUE 约束时
发生违规时,REPLACE
算法删除预先存在的行
造成限制的
插入或之前的违规行为
更新当前行和
命令继续正常执行。
如果违反 NOT NULL 约束
发生时,REPLACE冲突
解析替换NULL值
使用该列的默认值,
或者如果该列没有默认值,
然后使用ABORT算法。如果一个
发生 CHECK 约束违规时,
REPLACE冲突解决算法
总是像 ABORT 一样工作。

当REPLACE冲突解决时
策略删除行以便
满足约束,删除触发器
当且仅当递归触发时才触发
已启用。

未调用更新挂钩
REPLACE 删除的行
冲突解决策略。也没有
REPLACE 增加更改计数器。
中定义的异常行为
这一段可能会改变
未来版本。

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] ... ]

For SQLite, you would use ON CONFLICT REPLACE

onconflict - See http://www.sqlite.org/lang_conflict.html

REPLACE When a UNIQUE constraint
violation occurs, the REPLACE
algorithm deletes pre-existing rows
that are causing the constraint
violation prior to inserting or
updating the current row and the
command continues executing normally.
If a NOT NULL constraint violation
occurs, the REPLACE conflict
resolution replaces the NULL value
with he default value for that column,
or if the column has no default value,
then the ABORT algorithm is used. If a
CHECK constraint violation occurs, the
REPLACE conflict resolution algorithm
always works like ABORT.

When the REPLACE conflict resolution
strategy deletes rows in order to
satisfy a constraint, delete triggers
fire if and only if recursive triggers
are enabled.

The update hook is not invoked for
rows that are deleted by the REPLACE
conflict resolution strategy. Nor does
REPLACE increment the change counter.
The exceptional behaviors defined in
this paragraph might change in a
future release.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文