【数据库】Upsert=UpdateorInsert

编程探索课程 2024-03-03 06:00:41
1、什么是SQL当中的Upsert操作

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

upsert in SQL

在传统的 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, ...;

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

pg upsert

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_nameUSING (SELECT value1, value2, ... FROM dual) dON (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 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, ...;
0 阅读:0

编程探索课程

简介:感谢大家的关注