我有表user (id, firstname, lastname),id被定义为
id int8 NOT NULL DEFAULT nextval('user_id_seq'::regclass)但是,当我第一次使用这个SQL在数据库中插入一行时:
INSERT INTO user (id, firstname, lastname)
VALUES((SELECT(MAX(id) + 1) FROM user), firstname, lastname);数据被插入,但是当我通过API访问时,id不会被返回,我会得到一个错误。
重复键值违反唯一约束'user_pkey‘
这是因为在前面的插入中,通过数据库序列是不更新的。
如何解决这个问题?
发布于 2022-09-07 10:40:04
防止这种情况的唯一好方法是使用标识列,而不是:
ALTER TABLE tab
ALTER id
ADD GENERATED ALWAYS AS IDENTITY (START 1000000);这会自动创建序列,并且不允许普通insert语句覆盖默认值。
https://stackoverflow.com/questions/73631967
复制相似问题