gpt4 book ai didi

postgresql - UPSERT Postgres 9.5

转载 作者:行者123 更新时间:2023-11-29 13:52:53 25 4
gpt4 key购买 nike

我在 CentOS 6 上使用 Postgres 9.5。我有下表 (DDL)。

CREATE TABLE core_table.user_list(
user_id SMALLSERIAL DEFAULT nextval('core_table.user_list_user_id_seq'::regclass) NOT NULL,
user_name VARCHAR(50) NOT NULL,
full_name VARCHAR(255),
role_id INTEGER DEFAULT 1,
is_accessible INTEGER DEFAULT 1,
remarks VARCHAR(255),
password VARCHAR(50),
customer_schema VARCHAR(50),
core_schema VARCHAR(50),
CONSTRAINT user_list_pkey PRIMARY KEY(user_id, user_name),
CONSTRAINT user_list_user_id_key UNIQUE(user_id)
)
WITH (oids = false);

现有 4 行数据。

Row 1:
user_id: 1
user_name: kelly
full_name: kelly petz
role_id: 1
is_accessible: 1
remarks: <null>
password: test123
customer_schema: kelly_db1
core_schema: kelly_db1

Row 2:
user_id: 2
user_name: kelly
full_name: kelly petz
role_id: 1
is_accessible: 1
remarks: <null>
password: test123
customer_schema: petz_db1
core_schema: kelly_db1

Row 3:
user_id: 3
user_name: sam
full_name: sam howiz
role_id: 1
is_accessible: 1
remarks: <null>
password: test456
customer_schema: kelly_db1
core_schema: kelly_db1

Row 4:
user_id: 4
user_name: jon
full_name: jon lam
role_id: 1
is_accessible: 1
remarks: <null>
password: test789
customer_schema: lam_db1
core_schema: lam_db1

当我尝试执行以下 UPSERT 时遇到错误。

INSERT INTO core_table.user_list 
(user_name, full_name, remarks, password, customer_schema, core_schema, role_id, is_accessible)
VALUES
('kelly', 'kelly petz', 'The Boss', 'test123', 'snoppy_db1', 'snoppy_db1', 1, 1)
ON CONFLICT (user_name)
DO UPDATE SET
password = 'test123',
remarks = 'The Boss';

错误是“错误:没有匹配 ON CONFLICT 规范的唯一或排除约束”。

有人可以为我指出我的错误以及如何解决吗?

最佳答案

on conflict 子句在违反唯一约束时被调用。在给定的表中,user_name 不是唯一的(user_iduser_name 的组合是唯一的)。

如果你想使用这样的子句,你必须以某种方式使 user_name 唯一,例如,通过添加约束:

ALTER TABLE user_list ADD CONSTRAINT user_name_unique UNIQUE (user_name);

关于postgresql - UPSERT Postgres 9.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37585675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com