【问题标题】:How to alter Sequence in PostgreSQL with specific max(id) from a table? [duplicate]如何使用表中的特定 max(id) 更改 PostgreSQL 中的序列? [复制]
【发布时间】:2017-09-22 04:52:52
【问题描述】:

我需要正确使用以下 SQL 脚本语法。在 postgres 中,你不能真正将“alter sequence”与“select max(id)”链接起来。那么以 PostgreSQL 接受的方式编写脚本的正确方法是什么?

这是脚本,所以你可以知道我需要什么:

 alter SEQUENCE notification_settings_seq START with (select max(id) from game_user)

【问题讨论】:

  • 只要运行这个命令:SELECT setval('my_table_seq', (SELECT max(id) FROM my_table));

标签: sql postgresql


【解决方案1】:

这将使用新值重新启动您的序列:

do $$
declare maxid int;
begin
    select max(id) from game_user into maxid;
    execute 'alter SEQUENCE seq_name RESTART with '|| maxid;   
end;
$$ language plpgsql

【讨论】:

  • 感谢您的快速回复。我编辑了一点,但它做了我需要的。显然,这个问题已经得到了回答。我不适合发布重复。 დიდიმადლობა!
  • @Amiko - 不客气。 გაიხარე ))
  • SELECT setval('my_table_seq', (SELECT max(id) FROM my_table));
  • 如果序列名称中包含大写字母:SELECT setval(' "Foo" ', 42);注意单引号内的双引号
猜你喜欢
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 2016-02-25
相关资源
最近更新 更多