postgresql 怎么插入sql 没有就插入有就更新
时间: 2024-05-12 21:20:15 浏览: 100
PostgreSQL实现批量插入、更新与合并操作的方法
可以使用 PostgreSQL 的 INSERT ... ON CONFLICT ... DO UPDATE 语句来实现,具体步骤如下:
1. 创建一个表并插入一些数据:
```
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50) UNIQUE
);
INSERT INTO users (name, email)
VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com');
```
2. 使用 INSERT ... ON CONFLICT ... DO UPDATE 语句插入或更新数据:
```
INSERT INTO users (name, email)
VALUES ('Charlie', 'charlie@example.com')
ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;
```
上述语句的含义是:如果 email 已经存在于表中,则更新该行数据的 name 字段为新值,否则插入一行新数据。
注意,ON CONFLICT 子句需要指定一个唯一约束(如 UNIQUE 约束)或主键,用于判断是否已经存在该行数据。在上面的示例中,我们使用 email 字段作为唯一约束。
阅读全文