
一句话承诺:一张对照表 + 两段语法,让你快速写出“有则更新,无则插入”。

数据库 | 语法 | 示例 |
|---|---|---|
MySQL | INSERT … ON DUPLICATE KEY UPDATE | 依据唯一索引 |
PostgreSQL | INSERT … ON CONFLICT (…) DO UPDATE | 指定冲突目标 |
CREATE TABLE users (
id BIGINT PRIMARY KEY,
email VARCHAR(255) UNIQUE,
name VARCHAR(64)
);
INSERT INTO users (id, email, name)
VALUES (1, 'a@ex.com', 'Alice')
ON DUPLICATE KEY UPDATE name=VALUES(name);CREATE TABLE users (
id BIGINT PRIMARY KEY,
email TEXT UNIQUE,
name TEXT
);
INSERT INTO users (id, email, name)
VALUES (1, 'a@ex.com', 'Alice')
ON CONFLICT (email) DO UPDATE SET name=EXCLUDED.name;MongoDB 索引速查:TTL 与唯一索引的最小用法(命令+表)。