Drizzle | Upsert 查询
This guide assumes familiarity with:
PostgreSQL 和 SQLite
要在 PostgreSQL 和 SQLite 中实现上插入查询(跳到 MySQL),可以使用 .onConflictDoUpdate()
方法:
要在 PostgreSQL 和 SQLite 中一次查询上插入多行,您可以使用 sql 操作符
和 excluded
关键词。excluded
是一个特殊引用,指的是因冲突而未插入的提议行。
您可以这样做:
Drizzle 提供了简单而灵活的 API,可以让您轻松创建自定义解决方案。这是如何针对 PostgreSQL 和 SQLite 中由于冲突而更新特定列的自定义函数:
这是如何在 PostgreSQL 和 SQLite 中使用多个目标实现上插入查询:
如果您想在 update
语句中实现带有 where
条件的上插入查询,可以使用 setWhere
属性在 onConflictDoUpdate
方法中:
如果您想更新所有列,除了特定的一列,您可以像这样保留先前的值:
MySQL
要在 MySQL 中实现上插入查询,可以使用 .onDuplicateKeyUpdate()
方法。MySQL 会根据主键和唯一索引自动确定冲突目标,如果有任何唯一索引冲突,将会更新该行。
您可以这样做:
要在 MySQL 中一次查询上插入多行,您可以使用 sql 操作符
和 values()
函数。values()
函数指的是如果没有发生重复键冲突,则将插入的列的值。
Drizzle 提供了简单而灵活的 API,可以让您轻松创建自定义解决方案。这是如何针对 MySQL 中由于冲突而更新特定列的自定义函数:
如果您想更新所有列,除了特定的一列,您可以像这样保留先前的值: