相关疑难解决方法(0)

PostgreSQL函数用于最后插入的ID

在PostgreSQL中,如何将最后一个id插入表中?

在MS SQL中有SCOPE_IDENTITY().

请不要建议我使用这样的东西:

select max(id) from table
Run Code Online (Sandbox Code Playgroud)

postgresql insert lastinsertid

297
推荐指数
10
解决办法
23万
查看次数

更新行 INSERT 上的顺序

我有一个在 id 字段上设置主键的表,该表使用序列生成数字作为其默认值。插入记录时,这可以正常工作并且序列可以正确更新。但是,如果我插入带有 id 字段的记录(例如从备份导入),则序列不会更新。

CREATE TABLE public.my_table (
  my_id integer NOT NULL DEFAULT NEXTVAL('my_id_seq'),
  name text,
  CONSTRAINT my_primary PRIMARY KEY (myid)
);

CREATE SEQUENCE public.my_id_seq
   START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
Run Code Online (Sandbox Code Playgroud)

这更新了序列:

INSERT INTO my_table (name) VALUES ('Bart');
Run Code Online (Sandbox Code Playgroud)

这不会:

INSERT INTO my_table (my_id, name) VALUES (12, 'Bart');
Run Code Online (Sandbox Code Playgroud)

当序列达到 12 并且我尝试在没有 ID 的情况下插入时会导致问题。

有没有一个好的/标准的方法来自动执行此操作?我知道MySQL在它的专栏中做到了这一点AUTO_INCREMENT(这就是我遇到这个问题的方式,我来自MySQL)。我在网上查找并找到了一些方法:使用触发器,或者在插入后手动更新序列,但其中许多资源都相当陈旧。也许 9.1 版本有一些功能可以解决这个问题?

postgresql

5
推荐指数
1
解决办法
6798
查看次数

标签 统计

postgresql ×2

insert ×1

lastinsertid ×1