乘风原创程序

    当前位置:首页>>数据库>>Mssql>>postgresql 导入数据库表并重设自增属性的操作
  • postgresql 导入数据库表并重设自增属性的操作
  • 2021/1/27 17:15:00
  • postgresql使用navicat软件导出数据库表,在导入会数据库的操作。

    postgresql 的自增字段 是通过 序列 sequence来实现的。

    1、先删除导出的数据库表中的自增属性

    2、导入数据库表之后,需要创建序列。

    注:一般序列名称由数据表名+主键字段+seq组成 (通常情况下主键字段即为自增字段),如下表名为cof_table_hot_analysis,主键字段为 id

    create sequence cof_table_hot_analysis_id_seq
      start with 1
      increment by 1
      no minvalue
      no maxvalue
      cache 1;

    3、设置表字段(id)自增sql

    alter table cof_table_hot_analysis alter column id set default nextval('cof_table_hot_analysis _id_seq ');

    4、上面三步设置完之后

    自增字段id默认值是1,如果需要设置自增之后的其实数值,例如16

    select setval('cof_table_hot_analysis_id_seq', 16)

    5、清空表格时要重置序列新数据才会从1开始自增

    truncate table cof_table_hot_analysis restart identity

    扩展:

    删除序列:

    drop sequence [ if exists ] name [, ...] [ cascade | restrict ]

    修改序列:

    alter sequence name [ increment [ by ] increment ]
      [ minvalue minvalue | no minvalue ] [ maxvalue maxvalue | no maxvalue ]
      [ start [ with ] start ]
      [ restart [ [ with ] restart ] ]
      [ cache cache ] [ [ no ] cycle ]
      [ owned by { table.column | none } ]
    alter sequence name owner to new_owner
    alter sequence name rename to new_name
    alter sequence name set schema new_schema

    补充:pgsql添加自增序列、设置表某个字段自增

    添加自增序列

    create sequence 表名_id_seq
    start with 1
    increment by 1
    no minvalue
    no maxvalue
    cache 1;

    设置表某个字段自增

    alter table表名 alter column id set default nextval(‘表名_id_seq');

    从当前最大id依次递增

    select setval(‘表名_id_seq',(select max(id) from 同一个表名));

    大写字符的表需要加双引号。

    例如:

    select setval('“表名_id_seq”',(select max(id) from “表名”));

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