- 浏览: 239351 次
最新评论
一、简介
一个序列对象通常用于为行或者表生成唯一的标识符。
二、创建序列
方法一:直接在表中指定字段类型为serial 类型
create table test (id serial not null primary key ,name varchar(10));
NOTICE: CREATE TABLE will create implicit sequence "test_id_seq" for serial column "test.id"
CREATE TABLE
方法二:先创建序列,然后在新建的表中列属性指定序列,该列需int 类型
创建序列的语法:
CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
[ OWNED BY { table.column | NONE } ]
先创建序列
create sequence test1_id_seq increment by 1 minvalue 1 no maxvalue start with 1;
CREATE SEQUENCE
创建表指定该序列
create table test1(id int not null default nextval('test1_id_seq'), name varchar(10));
CREATE TABLE
三、查看序列
tina=# \d test1
Table "public.test1"
Column | Type | Modifiers
--------+-----------------------+----------------------------------------------------
id | integer | not null default nextval('test1_id_seq'::regclass)
name | character varying(10) |
tina=# \d test1_id_seq
Sequence "public.test1_id_seq"
Column | Type | Value
---------------+---------+---------------------
sequence_name | name | test1_id_seq
last_value | bigint | 1
start_value | bigint | 1
increment_by | bigint | 1
max_value | bigint | 9223372036854775807
min_value | bigint | 1
cache_value | bigint | 1
log_cnt | bigint | 0
is_cycled | boolean | f
is_called | boolean | f
四、序列应用
4.1 在INSERT 命令中使用序列
insert into test1 values (nextval('test1_id_seq'), 'David');
INSERT 0 1
insert into test1 values (nextval('test1_id_seq'), 'tina');
INSERT 0 1
select * from test1;
id | name
----+-------
1 | David
2 | tina
(2 rows)
4.2 数据有变后更新序列
指定序列从某个值从新开始计数
alter sequence test1_id_seq restart with 100;
ALTER SEQUENCE
查看当前序列值
select currval('test1_id_seq');
currval
---------
2
(1 row)
查看下一个序列值
select nextval('test1_id_seq');
nextval
---------
100
(1 row)
select nextval('test1_id_seq'); ---查一次增长一次
nextval
---------
101
(1 row)
select nextval('test1_id_seq');
nextval
---------
102
(1 row)
指定序列的值:
tina=# select setval('test1_id_seq', max(id)) from test1; --目前最大的id为2,将这个值赋给序列
setval
--------
2
(1 row)
tina=# select nextval('test1_id_seq');
nextval
---------
3
(1 row)
五、序列函数
函数 返回类型 描述
nextval(regclass) bigint 递增序列对象到它的下一个数值并且返回该值。这个动作是自动完成的。即使多个会话并发运行nextval,每个进程也会安全地收到一个唯一的序列值。
currval(regclass) bigint 在当前会话中返回最近一次nextval抓到的该序列的数值。此函数返回一个会话范围的数值,而且也能给出一个可预计的结果,因此可以用于判断其它会话是否执行过nextval。
lastval() bigint 返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。
如果当前会话还没有调用过nextval,那么调用lastval将会报错。
setval(regclass, bigint) bigint 重置序列对象的计数器数值。设置序列的last_value字段为指定数值并且将其is_called字段设置为true,表示下一次nextval将在返回数值之前递增该序列。
setval(regclass, bigint, boolean) bigint 重置序列对象的计数器数值。功能等同于上面的setval函数,只是is_called可以设置为true或false。如果将其设置为false,那么下一次nextval将返回该数值,随后的nextval才开始递增该序列。
select lastval(); --不需要指定序列名,只是当前会话最后一次nextval的值
lastval
---------
3
(1 row)
其他几个上面已经使用过了。
六、修改序列
语法:
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 increment by 2 restart with 200;
修改属主和名称:
alter sequence name owner to new_owner;
alter sequence name rename to new_name;
alter sequence name set schema new_schema;
授权:
grant select,update on sequence tbname_id_seq to username;
七、删除序列
语法:
DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
当有表字段使用到PG序列时,不能直接删除。
drop sequence test1_id_seq;
ERROR: cannot drop sequence test1_id_seq because other objects depend on it
DETAIL: default for table test1 column id depends on sequence test1_id_seq
HINT: Use DROP ... CASCADE to drop the dependent objects too.
drop table test1;
DROP TABLE
drop sequence test1_id_seq;
DROP SEQUENCE
说明:如果序列是由建表时指定serial 创建的,删除该表的同时,对应的序列也会被删除。
发表评论
-
pg 锁
2016-01-14 16:26 0pg 锁 ... -
postgresql 的三类日志
2016-01-14 15:59 18406一、PostgreSQL有3种日志: 1)pg_log(数据 ... -
pg存储过程--创建分区表
2016-01-13 15:46 01)将普通表改成按时间字段分区表 调用select fun_c ... -
pg常用自制shell脚本-tina
2016-01-13 15:30 48491)小型监控: 1.在pg库主机上部署,每5分钟执行一次,插入 ... -
postgresql 时间类型和相关函数
2016-01-13 10:41 5340今天来好好学习一下postgresql涉及时间的字段类型和一些 ... -
pg 表空间
2016-01-07 16:28 3088一、说明 在数据库运维工作中,经常会有数据目录使用率较高 ... -
pg 定期vacuum和reindex
2016-01-07 14:56 8565定期vacuum和reindex: 一 ... -
pg 简单备份和恢复
2016-01-06 15:53 3730pg的备份和恢复 pg_dump ... -
ERROR: invalid page header in block 27073 of relation base/21078/45300926
2016-01-06 15:12 2116突然断网,检查后通知我们UPS断电,db所在主机重启 1、连上 ... -
pg_cancel_backend()和pg_terminate_backend()
2016-01-05 17:42 3520pg_cancel_backend()和pg_terminat ... -
canceling statement due to conflict with recovery
2016-01-05 17:12 1622报错: canceling statement due to ... -
postgresql dblink 使用
2015-12-31 14:33 2011dblink的使用 pg的跨库查询工具 select dbli ... -
root用户不能使用psql或者pg_dump等pg命令
2015-12-24 14:40 6956root用户不能使用psql或者pg_dump等pg命令 [ ... -
postgresql新建库2个常见报错
2015-12-22 16:43 6160今天使用pg建库发现两个报错: ERROR: new c ... -
安装postgresql 9.1.1
2015-12-22 16:25 613安装postgresql 9.1.1 ---版本自选,步骤相同 ... -
pgbadger监控安装和使用
2015-12-21 10:01 2001pgbadger监控安装和使用 https://github ... -
oracle,postgresql,mysql一些使用上的区别记录
2015-12-16 11:38 01.限制行数: select * from ta where ... -
postgresql存储过程实例:已审核证书存入临时表
2015-12-14 16:44 622存储过程实例: 需求: 思路:建立存储过程 代码逻辑: 1 ... -
pg 函数sfa_tmp_sleep()执行越来越慢-sql分析
2015-12-11 09:48 646pg 函数sfa_tmp_sleep()执行越来越慢 ... -
pgpool 主从流复制模式下的安装使用
2015-12-11 09:50 4093pgpool-II 是一个位于 PostgreSQL 服务器和 ...
相关推荐
非参数回归模型在金融时间序列上的应用,朱云霓,刘琼荪,本文旨在运用非参数回归模型来解决金融上的实际问题;对1998~2009年的上证综指的收益率数据进行了简单的统计分析,说明利用非参数回
可用于数据库,表,索引,序列,视图,触发器, 函数和语言的浏览器和构造器。 用户,组和权限配置对话框。 带有升级脚本生成功能的版本跟踪。 Microsoft MSysConf 表的配置。 数据输入和输出向导。 数据库迁移...
1、导出整个数据库模式(表、视图、序列、索引),以及唯一性,主键、外键和检查约束 2、导出用户和组的授权/权限 3、导出筛选的表(通过制定表明) 5、导出预定义
可用于数据库,表,索引,序列,视图,触发器, 函数和语言的浏览器和'构造器'。 用户,组和权限配置对话框。 带有升级脚本生成功能的版本跟踪。 Microsoft MSysConf 表的配置。 数据输入和输出向导。 数据库的CRUD...
pg_partman是用于创建和管理基于时间和基于序列的表分区集的扩展。 从pg_partman v3.0.1开始支持PostgreSQL 10的本机分区,而从PostgreSQL 11开始从4.0.0起更广泛的支持。请注意,本机尚不支持基于触发器的分区的...
九、序列操作函数: 九、序列操作函数: 九、序列操作函数: 九、序列操作函数: . 35 十二、系统信息 十二、系统信息 十二、系统信息 函数: 函数: .38 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习...
PG实体 该库是之上的一个令人愉悦的层。 它旨在成为刚性ORM与手动SQL查询字符串之间的便利中间地带。 这是它的理念: 序列化/反序列化部分留给使用者,因此您必须使用自己的FromRow / ToRow实例。 鼓励您采用对...
从圆弧青霉PG37中克隆了碱性脂肪酶(LipI)基因,并采用生物信息学分析了PG37 LipI基因携带的遗传信息。序列分析结果表明:Lip IDNA序列全长1480bp,不存在重复序列,含有5个内含子,5'端存在TATA box和多个转录因子...
使用此模块,您可以修改SQL查询语句的一部分,并将查询树序列化回格式化SQL语句。 它使用真正的。 该模块提供的主要功能是解析,而PostgreSQL在内部没有。安装npm install pg-query-parser例子重写SQL查询的一部分...
PG5200 工具编程考试 贡献者:& 介绍 我们受委托为《炉石传说》等游戏创建卡片编辑器。 我们想要创建这样的应用程序的原因是游戏设计师应该能够有效地为他们的游戏批量生产潜在的卡片。 应用程序的要求是它已经用 C#...
pg_dba_metrics 简单的python脚本,可以对数据库执行任意查询,并以JSON格式返回结果,以供New Relic自定义指标API使用 用法 安装 git clone https://github.com/tym-xqo/pg_dba_metrics cd pg_dba_metrics pip ...
序列化自动化 自动为生成模型。 支持javascript,打字稿,egg.js和midway。 正在安装 全球的 $ npm install -g sequelize-automate 您还必须为所选的数据库手动安装驱动程序: # One of the following: $ npm ...
使用Sequelize,Postgres在Node / Express App中构建REST API 该存储库正在使用Sequelize和Postgres在Node / Express App中构建REST API设计。先决条件设置 $ npm install $ node_modules/.bin/sequelize ...
以耐贮辣椒品系P98为材料,采用RACE方法...Blast比对发现,该基因核苷酸序列与已报道的番茄和番木瓜PG基因具有84%和85%的相似性。聚类分析表明,该基因与番茄和番木瓜的亲缘关系较近,与拟南芥PG基因的亲缘关系较远。
该系统表记录了数据表、索引(仍然需要参阅pg_index)、序列、视图、复合类型和一些特殊关系类型的元数据。注意:不是所有字段对所有对象类型都有意义。 名字 类型 引用 描述 relname name 数据类型名字...
通常码片速率远高于数据源的比特率,而二者之间的比值就是处理增益(PG)。PG真实地反映了在接收端解扩(去掉PN码)前后信噪比的改善情况。 DSSS系统的接收机必须首先去掉接收信号的扩频码(即解扩),然后才能对信号...
查找表由[ ]中的前1024个表情符号构成,其中每个表情符号都映射到一个唯一的10位序列。 输入数据分为10位片段,映射到相应的表情符号。 结果中的第一个表情符号是标题,如果结果填充为零,则第一位为1,其余9位为...
DistributedLog会分类维护记录的序列(sequences of records),并将其称为Log(又叫做Log Stream),将记录写入到DL Log的进程称之为Writer,从Log中读取并处理记录的进程称之为Reader。因此,它整体的软件栈如下所...
该算法如 Lempel 和 Ziv (IEEE trans inf theory IT-22, 75 (1976)) 和 Kaspar and Schuster (Physical Review A, vol 36, no 2, pg 842) 中所述。 输入是二进制序列,输出是 kolmogorov 复杂度。
以卡门柏青霉-PG3为出发菌株,提取其总RNA,应用反转录.聚合酶链式反应(RT-PCR)扩增出860bp左右的片段,核苷酸序列分析表明其与甘油单-双酰酯脂肪酶(MDGL)基因(mdlA)一致。将此基因克隆到原核表达载体pET-28a中,...