优雅实现:如果记录存在,就更新记录,否则插入一条新记录

通常,我们用两条语句来实现这个功能:

UPDATE table SET field='C', field2='Z' WHERE id=3;
INSERT INTO table (id, field, field2)
       SELECT 3, 'C', 'Z'
       WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);

可以用下面一条语句实现:

INSERT INTO the_table (id, column_1, column_2) 
VALUES (1, 'A', 'X'), (2, 'B', 'Y'), (3, 'C', 'Z')
ON CONFLICT (id) DO UPDATE 
  SET column_1 = excluded.column_1, 
      column_2 = excluded.column_2;

上面的语句在 Postgresql 中实现,在 MySQL 中也是类似写法。

你可能感兴趣的:(PostgreSQL)