我想要在PostgreSQL中更新或插入一列,而不是使用“INSERT ... ON CONFLICT ...”进行插入或更新,因为会有更多的更新而不是插入操作。另外,我还有一个自动递增的id列,该列是使用SERIAL定义的,所以每次尝试进行插入或更新时都会增加id列,这不是我想要的结果,我希望只有在进行插入时id列才会增加,以便所有id都按顺序排列。
表格的创建方式如下:
谢谢 :)
表格的创建方式如下:
CREATE TABLE IF NOT EXISTS table_name (
id SERIAL PRIMARY KEY,
user_id varchar(30) NOT NULL,
item_name varchar(50) NOT NULL,
code_uses bigint NOT NULL,
UNIQUE(user_id, item_name)
)
我使用的查询语句是:
INSERT INTO table_name
VALUES (DEFAULT, 'some_random_id', 'some_random_name', 1)
ON CONFLICT (user_id, item_name)
DO UPDATE SET code_uses = table_name.code_uses + 1;
谢谢 :)
insert ... on conflict...
的问题究竟是什么。 - user330315insert ... on conflict ...
的问题在于这里的ID存在间隙,我认为尝试多次插入并不是一个好主意,因为在大多数情况下,只需要更新即可。 - Awesome Stickz