postgresql的insert语句中进行判断,数据已有则更新,数据没有则插入

INSERT 操作

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

下面是一个示例:

INSERT INTO employee (id, name, salary)
VALUES (1, 'John Doe', 5000);

 INSERT或UPDATE 操作

在执行insert的时候进行判断,根据情况进行insert或者update操作,可以使用 INSERT ON CONFLICT 语句来实现

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON CONFLICT (column)
DO UPDATE SET column1 = value1, column2 = value2, ...;
  • table_name:要插入或更新数据的表的名称。
  • column1, column2, …:要插入或更新的列的名称。
  • value1, value2, …:要插入或更新的值。
  • column:用于指定用于检查冲突的列。

下面是一个示例:

INSERT INTO employee (id, name, salary)
VALUES (1, 'John Doe', 5000)
ON CONFLICT (id)
DO UPDATE SET name = 'John Doe', salary = 5000;

 

需要注意的是conflict的字段,必须是主键字段,因此在用之前需要对这几个指定字段建立主键。

ALTER TABLE public.pollute_day_water    
    ADD CONSTRAINT pollute_day_water_pkey
        PRIMARY KEY (mp_id,data_time,pollutant_code        
    );

 

posted @ 2023-09-20 13:52  JackGIS  阅读(1130)  评论(0编辑  收藏  举报