postgresql修改自增序列操作

在 mysql 中,实现 id 自增的方式是依靠加一个 auto_increment 标志,而在 pgsql 中,id 自增是通过序列 SEQUENCE。

创建表时设置自增序列为:

CREATE TABLE "config" (
 "id" int4 NOT NULL DEFAULT nextval('config_id_seq'::regclass),
 ...
};

如果需要修改创建表之后的序列,如:

----删除前先解除 id 对该序列的依赖
ALTER TABLE tablename ALTER COLUMN id SET DEFAULT null;
DROP SEQUENCE IF EXISTS sequence_name;
---- id_max 即 id 目前的最大值,可写为1,可通过 “SELECT MAX(id) FROM tablename” 得到
CREATE SEQUENCE sequence_name START WITH id_max;
ALTER TABLE tablename ALTER COLUMN id SET DEFAULT nextval('sequence_name'::regclass);

补充:PostgreSQL 序列增删改

创建序列

CREATE SEQUENCE if not exists test_mergetable_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 999999999
START 1
CACHE 1;
//或者:
create sequence if not exists test_mergetable_id_seq increment by 1 minvalue 1 no maxvalue start with 1; 

指定序列(给表的主键指定创建好的序列)

alter table test_mergetable alter column "i_id" set default nextval('test_mergetable_id_seq');

设置序列自增长从当前最大值开始

SELECT setval('test_mergetable_id_seq', (SELECT MAX(i_id) FROM test_mergetable));

alter sequence test_mergetable_id_seq start with 12;

删除序列

drop sequence IF EXISTS test_mergetable_id_seq

查看序列

SELECT nextval('test_mergetable_id_seq')

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

(0)

相关推荐

  • PostgreSQL标准建表语句分享

    如下所示: -- 建表 CREATE TABLE if not exists public.user ( id character varying(32) NOT NULL DEFAULT sys_guid(), name character varying(100) NOT NULL, gender character varying(50) NOT NULL, age character varying(10) NOT NULL, id_no character varying(50) NO

  • postgreSQL 数字与字符串类型转换操作

    数字转字符串 select cast(123 as VARCHAR); 字符串转数字 select cast('123' as INTEGER); 以此类推,应该也可以转换为其他数据类型. 补充:pgSql, mySql中字符串转化为数字 pgSql 语法 to_number(text, text) 例子 select to_number(trim(both 'ibs' from classname), '999999') as cn from bbs order by cn /*trim(bo

  • postgresql 实现更新序列的起始值

    迁移老数据到新的数据库,需要把id迁移过来,这时序列值就需要修改为当前最大值加1了. 使用这个语句就可以让s_seq的序列值从7开始了. alter sequence s_seq restart with 7; 补充:PostgreSQL设置主键自增.PostgreSQL重置主键自增从1开始,PostgreSQL清空表数据自增从1开始 PostgreSQL设置主键自增.PostgreSQL重置主键自增从1开始 自增字段 从1开始 清空表数据,自增从1开始 自增字段 PostgreSQL设置主键自

  • postgresql 导出建表语句的命令操作

    我就废话不多说了,大家还是直接看命令吧~ pg_dump -h host -U postgres -d dbname -O -s -t "table_name" > name.sql 补充:PostgreSQL使用pg_dump导出单个数据表的insert语句 PostgreSQL自带的pgadmin4工具没有办法生成数据表的insert语句,这使得想要提取单个表的数据,插入到不同环境的相同表中变成很麻烦的一件事,使用PostgreSQL的pg_dump工具可以实现该功能. 使用

  • postgresql 数据库 与TimescaleDB 时序库 join 在一起

    之前在CSDN阅读资料时,发现有人问怎么把 postgresql数据库 的表 跟TimescaleDB 时序库的表 join在一起,正好我在查询数据的时候遇到过这个问题 ,我说一下我的解决方案 我选择的是postgresql数据库的fdw功能(postgres_fdw插件) ** 一 安装postgres_fdw插件 1.1安装postgres_fdw插件 ** su – postgres -bash-4.2$ psql postgres=# \c hrmwv2 #(数据库名字) Create

  • PostgreSQL之pgdump备份恢复操作

    逻辑备份在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,故一般不采取逻辑备份方式进行数据库备份,但逻辑适用于跨平台跨版本的数据迁移: 逻辑备份恢复主要以下三种: pg_dump pg_dumpall copy 本小节主要讲解pg_dump pg_dump备份 只能备份单个数据库,不会导出角色和表空间相关的信息 -F c 备份为二进制格式,压缩存储.并且可被pg_restore用于精细还原 -F p 备份为文本,大库不推荐 pg_dump恢复 psql dbname -U username

  • 在postgresql数据库中判断是否是数字和日期时间格式函数操作

    在编写GreenPlum函数的过程中,遇到要判断字符串是否是数字和日期格式的情况,基于GreenPlum和postgresql的亲缘关系,找到了下面两个函数. --1.判断字符串是否是数字 CREATE OR REPLACE FUNCTION isnumeric(txtStr VARCHAR) RETURNS BOOLEAN AS $$ BEGIN RETURN txtStr ~ '^([0-9]+[.]?[0-9]*|[.][0-9]+)$'; END; $$ LANGUAGE 'plpgsq

  • postgresql修改自增序列操作

    在 mysql 中,实现 id 自增的方式是依靠加一个 auto_increment 标志,而在 pgsql 中,id 自增是通过序列 SEQUENCE. 创建表时设置自增序列为: CREATE TABLE "config" ( "id" int4 NOT NULL DEFAULT nextval('config_id_seq'::regclass), ... }; 如果需要修改创建表之后的序列,如: ----删除前先解除 id 对该序列的依赖 ALTER TABL

  • postgresql 修改列类型操作

    习惯了Oracle中: ALTER TABLE 表名 ALTER COLUMN 列名 新的数据类型[(长度)] NULL或NOT NULL 这种修改方式的时候,在pg中: highgo=# create table p1 (id int,pswd varchar(30),time timestamp); CREATE TABLE highgo=# insert into p1 select generate_series(1,500000),md5('random()::text'),clock

  • PostgreSQL 修改视图的操作

    最近发现PostgreSQL(create or replace) 修改视图有很多的限制,不像SQL Server和Oracle那样可以随意修改. 错误提示 修改视图原有字段 ERROR: cannot change name of view column "user_id" to "?column?" 删除视图原有字段 ERROR: cannot drop columns from view 找到如下原因,内容原文 究其原因,是PostgreSQL虽然支持CREA

  • PostgreSQL 修改表字段常用命令操作

    --数据库.模式.表名 "identities"."Test"."tab_test" --修改字段名 ALTER TABLE "identities"."Test"."tab_test" RENAME "u_name" to realname ; --添加字段 ALTER TABLE "identities"."Test".&q

  • JQuery EasyUI学习教程之datagrid 添加、修改、删除操作

    一篇关于JQueryEasyUI学习之datagrid 添加.修改.删除 学习笔记教程有需要了解的朋友可参考本的笔记,批量删除,双击表单修改.选中行修改,增加行修改,再有就是扩展editor的方法,无需废话,直接上代码,代码中的注释写的很详细 <script type="text/javascript" charst="utf-8">var editFlag = undefined;//设置一个编辑标记 //因为layout框架指向href时,只取htm

  • Python模拟自动存取款机的查询、存取款、修改密码等操作

    1.工作流程 2.模拟自动存取款机的操作 代码如下: import msvcrt, sys, os #定义用星号隐藏密码输入的函数 def psw_input(): li = [] while True: ch = msvcrt.getch() #回车 if ch == b'\r': msvcrt.putch(b'\n') break #退格 elif ch == b'\x08': if li: li.pop() msvcrt.putch(b'\b') msvcrt.putch(b' ') ms

  • php遍历目录下文件并按修改时间排序操作示例

    本文实例讲述了php遍历目录下文件并按修改时间排序操作.分享给大家供大家参考,具体如下: php 遍历目录下文件方法 //遍历目录下文件方法 function printdir($dir) { $files = array(); //opendir() 打开目录句柄 if($handle = @opendir($dir)){ //readdir()从目录句柄中(resource,之前由opendir()打开)读取条目, // 如果没有则返回false while(($file = readdir

  • Yii2.0框架模型添加/修改/删除数据操作示例

    本文实例讲述了Yii2.0框架模型添加/修改/删除数据操作.分享给大家供大家参考,具体如下: 添加数据 $user = new User(); $user->name = 'zhang'; $user->age = 28; $data = $user->save();//添加数据 $data = $user->insert();//添加数据 $id = $user->attributes['id'];//获取当前添加数据后的自增id 修改数据 $user = $User::f

  • node解析修改nginx配置文件操作实例分析

    本文实例讲述了node解析修改nginx配置文件操作.分享给大家供大家参考,具体如下: 主要是通过nginx-conf这个工具. git地址:https://github.com/tmont/nginx-conf 具体用法: npm install -S nginx-conf 安装工具 var NginxConfFile = require('nginx-conf').NginxConfFile; // 这个api提供了node读写conf文件的功能 NginxConfFile.create('

  • Git commit --amend 修改提交信息操作

    amend翻译成中文:修改 1.修改还未push的提交 //修改最近一次提交 git commit --amend //进入注释页面,进行修改 //修改后保存退出 2.修改已经push的提交 //修改最近一次提交 git commit --amend //进入注释页面,进行修改 //修改后保存退出 //强制推送 git push --force-with-lease origin master 补充知识:git 使用amend补上遗漏文件 适用场景:上一次提交遗漏了一些文件,需要补交,但不想多一

随机推荐