【发布时间】:2021-12-18 06:27:22
【问题描述】:
我有一个 SQL upsert 查询,我想返回位置表的插入记录 ID 或更新记录 ID。我需要在查询中进行哪些更改? (注意:name 列是唯一的)
CREATE OR REPLACE PROCEDURE locations_upsert
(
_name TEXT,
_address TEXT,
_postal_code TEXT,
_country TEXT
)
LANGUAGE SQL
AS $$
INSERT INTO locations
(
name,
address,
postal_code,
country
)
VALUES
(
_name,
_address,
_postal_code,
_country
)
ON CONFLICT (name)
DO UPDATE
SET
address = _address,
postal_code = _postal_code,
country = _country
$$;
【问题讨论】:
-
使用函数
returns bigint -
在函数中使用
RETURNING id。有关更多信息,请参阅 Postgres 文档:postgresql.org/docs/current/sql-insert.html -
谢谢你们。问:是不是可以通过程序来实现?
标签: sql postgresql stored-procedures sql-function