PostgreSQL
PostgreSQL
MERGE INTO stock AS s
USING incoming AS i
ON s.sku = i.sku
WHEN MATCHED THEN
UPDATE SET qty = s.qty + i.qty
WHEN NOT MATCHED THEN
INSERT (sku, qty) VALUES (i.sku, i.qty);MySQL 替代
MySQL 替代
INSERT INTO stock (sku, qty)
VALUES ('A1', 5) AS new
ON DUPLICATE KEY UPDATE qty = qty + new.qty;| PostgreSQL | MERGE 支持多分支 WHEN;适合 ETL 合并场景 |
|---|---|
| MySQL | 没有 MERGE;用 upsert 或“临时表 + UPDATE JOIN + INSERT SELECT”两步走 |
| 原子性 | 单语句原子执行;并发下仍要依赖约束与隔离级别保证正确性 |