在我的项目中,我使用的是Postgres 12,我想使用一个查询来插入或更新。
我的语法不正确。
更新:插入工作,但更新不。
错误:无效参数编号::name“
'INSERT INTO user (
name, url
) VALUES (:name, :url)
ON CONFLICT (id)
WHERE id = :userId
DO UPDATE SET
name = :name,
url = :url'我使用这个EXAMPLE来执行UPSERT,如果userId被传递了,如果没有插入新的行,我想要更新。
谢谢
发布于 2022-08-10 14:42:13
BEGIN;
CREATE TABLE users (
user_id bigint PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
name text,
url text
);
INSERT INTO users (name, url)
VALUES ('Hello', 'world');
COMMIT;使用psql:https://www.postgresql.org/docs/current/app-psql.html
在psql:How do you use script variables in psql?中设置变量
您还可以在事务中设置变量。
BEGIN;
\set name 'hi'
\set url 'yech'
INSERT INTO users (user_id, name, url)
VALUES (1, :'name', :'url')
ON CONFLICT (user_id)
DO UPDATE SET
name = EXCLUDED.name, url = EXCLUDED.url
RETURNING
*;
TABLE users;
COMMIT;https://stackoverflow.com/questions/73304270
复制相似问题