pgsql 实现在表A插入一行数据,如果该行数据已存在则不执行Insert,不存在则执行,sql语句怎么写
时间: 2024-09-16 22:01:48 浏览: 40
MySQL创建存储过程批量插入10万条数据
在 PostgreSQL 中,你可以使用 `ON CONFLICT` 或 `INSERT INTO ... ON CONFLICT DO NOTHING` 语句来实现这样的需求。假设表 A 的主键或唯一约束字段是 column_name,你可以这么写:
```sql
INSERT INTO table_A (column1, column2, ...)
VALUES ('value1', 'value2', ...)
ON CONFLICT (column_name) DO UPDATE SET column1 = EXCLUDED.column1, column2 = EXCLUDED.column2;
```
这个 SQL 语句的意思是在尝试插入新记录时,如果发现指定的主键值已经存在(即冲突),那么不会插入新的记录,而是更新已有记录的对应字段。如果希望完全不执行插入操作,只在数据不存在时插入,可以改为:
```sql
INSERT INTO table_A (column1, column2, ...)
VALUES ('value1', 'value2', ...)
ON CONFLICT (column_name) DO NOTHING;
```
阅读全文