主页 > 知识库 > pgsql批量修改sequences的start方式

pgsql批量修改sequences的start方式

热门标签:打电话智能电销机器人授权 漯河外呼电话系统 合肥公司外呼系统运营商 办公外呼电话系统 外呼调研系统 重庆自动外呼系统定制 海丰有多少商家没有地图标注 地图标注和图片名称的区别 美容工作室地图标注

修改为指定值

DO $$DECLARE r record;
BEGIN
FOR r IN SELECT sequence_name FROM information_schema."sequences"
LOOP
 EXECUTE 'ALTER SEQUENCE '|| r.sequence_name ||' restart WITH 10000';
END LOOP;
END$$;

根据表的id修改

DO $$
DECLARE 
 r record;
 start_value integer := 0;
BEGIN
FOR r IN SELECT tablename||'_id_seq' AS sequence_name, tablename FROM pg_tables WHERE schemaname = 'public'
LOOP
 EXECUTE 'SELECT max(id)+1 AS max_value FROM ' || r.tablename INTO start_value;
 IF start_value IS NULL THEN start_value:= 1;
 END IF;
 RAISE NOTICE 'start_value % %', r.tablename,start_value;
 EXECUTE 'ALTER SEQUENCE '|| r.sequence_name ||' restart WITH ' || start_value;
END LOOP;
END$$;

补充:postgresql 13 数据库 sequence 的 maxvalue 最大值是多少?

os: centos 7.8.2003

db: postgresql 13.0

版本

# cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)
# su - postgres
Last login: Thu Oct 15 09:59:33 CST 2020 on pts/1

ppostgres@nodepg13-> psql -c "select version();"
             version             
---------------------------------------------------------------------------------------------------------
 PostgreSQL 13.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)

create sequence

$ psql

postgres=# create sequence seq_1;
CREATE SEQUENCE
postgres=# select c.relname,c.relkind,s.* from pg_class c,pg_sequence s where c.oid=s.seqrelid;
 relname | relkind | seqrelid | seqtypid | seqstart | seqincrement |  seqmax  | seqmin | seqcache | seqcycle 
---------+---------+----------+----------+----------+--------------+---------------------+--------+----------+----------
 seq_1 | S  | 40968 |  20 |  1 |   1 | 9223372036854775807 |  1 |  1 | f
(1 row)
seqmax = 9223372036854775807

maxvalue
NO MAXVALUE
The optional clause MAXVALUE maxvalue determines the maximum value for the sequence. If this clause is not supplied or NO MAXVALUE is specified, then default values will be used. The default for an ascending sequence is the maximum value of the data type. The default for a descending sequence is -1.

那就需要查看下 bigint 的值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:
  • pgsql 如何删除仍有活动链接的数据库
  • pgsql的UUID生成函数实例
  • pgsql 如何手动触发归档
  • PGSQL实现判断一个空值字段,并将NULL值修改为其它值
  • pgsql 实现用户自定义表结构信息获取
  • pgsql锁表后kill进程的操作
  • PGSQL 实现把字符串转换成double类型(to_number())
  • pgsql添加自增序列、设置表某个字段自增操作
  • pgsql之pg_stat_replication的使用详解

标签:晋城 珠海 锦州 蚌埠 株洲 乌海 衡阳 来宾

巨人网络通讯声明:本文标题《pgsql批量修改sequences的start方式》,本文关键词  pgsql,批量,修改,sequences,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《pgsql批量修改sequences的start方式》相关的同类信息!
  • 本页收集关于pgsql批量修改sequences的start方式的相关信息资讯供网民参考!
  • 推荐文章