玖叶教程网

前端编程开发入门

【数据库】Upsert = Update or Insert

1、什么是SQL当中的Upsert操作

UPSERT 操作是一种在数据库中执行插入和更新操作的方式,根据指定的条件执行插入操作或更新已存在的行。不同的数据库管理系统可能有不同的 UPSERT 实现方式。

在传统的 SQL 中,通常使用两个操作(INSERT 和 UPDATE)来实现 UPSERT:

插入操作:尝试插入新的行,如果插入的行违反了唯一约束或主键的约束,则会引发错误。
更新操作:如果插入操作引发了唯一约束或主键的错误,则执行更新操作。

然而,一些现代的数据库管理系统提供了更简化的 UPSERT 语法。以下是几个常见的 UPSERT 语法示例:

2、PG Upsert操作

PostgreSQL 和 MySQL 使用 INSERT ... ON DUPLICATE KEY UPDATE 语法来执行 UPSERT 操作:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE column1=new_value1, column2=new_value2, ...;

这将尝试插入一行新数据,如果存在冲突将执行更新操作。

3、SQLite Upsert

SQLite 使用 INSERT INTO ... VALUES ... ON CONFLICT(column) DO UPDATE SET column=new_value 语法来执行 UPSERT 操作:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON CONFLICT (column)
DO UPDATE SET column1=new_value1, column2=new_value2, ...;

这将尝试插入一行新数据,如果存在冲突将执行更新操作。

4、Oracle Upsert

Oracle 使用 MERGE INTO ... USING ... ON ... WHEN MATCHED THEN UPDATE ... WHEN NOT MATCHED THEN INSERT ... 语法来执行 UPSERT 操作:

MERGE INTO table_name
USING (SELECT value1, value2, ... FROM dual) d
ON (condition)
WHEN MATCHED THEN
  UPDATE SET column1=new_value1, column2=new_value2, ...
WHEN NOT MATCHED THEN
  INSERT (column1, column2, ...) VALUES (value1, value2, ...);

这将尝试执行合并操作,根据给定的条件判断是否应该执行更新或插入UPSERT(合并操作)是一种在关系型数据库中用于插入或更新记录的操作。它的目的是在执行插入操作时,如果记录已经存在,则更新该记录;如果记录不存在,则插入新的记录。

5、MySQL or MariaDB Upsert

MySQL 和 MariaDB 支持使用 INSERT ... ON DUPLICATE KEY UPDATE 语句进行 UPSERT 操作:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE column1=new_value1, column2=new_value2, ...;

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言