PostgreSQL中 类似于Mysql的replace into的功能
PostgreSQL中没有直接类似于MySQL的REPLY INTO
语句,但是可以使用ON CONFLICT
子句来实现相似的功能。
例如,如果你想要插入一条新记录,但如果记录已经存在,则替换它,可以这样做:
INSERT INTO your_table (id, column1, column2)
VALUES (1, 'value1', 'value2')
ON CONFLICT (id) DO UPDATE
SET column1 = EXCLUDED.column1,
column2 = EXCLUDED.column2;
在这个例子中,如果your_table
中存在id
为1的记录,那么会更新column1
和column2
为新的值。如果不存在冲突,则会正常插入新记录。
如果你想要替换整行数据,可以省略SET
子句后面的部分,只保留DO UPDATE
,这样在遇到冲突时会用EXCLUDED行的数据完全替换原有行。
INSERT INTO your_table (id, column1, column2)
VALUES (1, 'value1', 'value2')
ON CONFLICT (id) DO UPDATE;
这样,如果发生冲突,整行数据会被新的EXCLUDED数据所替换。
评论已关闭