• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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的使用详解
    上一篇:postgresql 实现更新序列的起始值
    下一篇:postgresql 导出建表语句的命令操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    pgsql批量修改sequences的start方式 pgsql,批量,修改,sequences,