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 UpsertSQLite 使用 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 UpsertOracle 使用 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 Upsertmysql 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, ...;