栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我不明白postgresql的nextval()是如何工作的,有人可以解释吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我不明白postgresql的nextval()是如何工作的,有人可以解释吗?

NEXTVAL
是从序列中获取下一个值的函数。

序列是一个对象,它返回不断增加的数字,每次调用都不同,而与事务等无关。

每次致电

NEXTVAL
,您都会得到一个不同的号码。

这主要用于为您的表生成代理主键。

您可以创建一个表,如下所示:

CREATE SEQUENCE mysequence;CREATE TABLE mytable (id BIGINT NOT NULL PRIMARY KEY, value INT);

并插入如下值:

INSERTINTO    mytable (id, value)VALUES        (NEXTVAL('mysequence'), 1),        (NEXTVAL('mysequence'), 2);

看看你得到什么:

SELECt * FROM mytable; id | value----+-------  1 |     1  2 |     2

PostgreSQL为此提供了一个不错的语法糖:

CREATE TABLE mytable (id BIGSERIAL PRIMARY KEY, value INT);

相当于

CREATE SEQUENCE mytable_id_seq; -- table_column_'seq'CREATE TABLE mytable (id BIGINT NOT NULL PRIMARY KEY DEFAULT NEXTVAL('mytable_id_seq'), value INT); -- it's not null and has a default value automatically

可以这样使用:

INSERTINTO    mytable (value)VALUES  (1),        (2);  -- you can omit id, it will get filled for you.

请注意,即使您回滚了insert语句或从两个不同的会话中运行并发语句,返回的序列值也将永远不会相同,也不会被重用(请参阅文档中的精美印刷品,尽管位于

CYCLE
)。

因此,您可以确保所有主键的值都将在表中唯一生成。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号