PostgreSQL 序列的下一个值?

2024-04-19

我的 Codeigniter 网站使用 PostgreSQL。我正在使用杂货杂货进行添加、编辑和删除操作。在进行编辑或添加时,我想根据内容的 ID 动态重命名上传的文件。我可以使用杂货做到这一点callback_after_upload功能。

我想要在添加新内容时获得内容的下一个 ID。我尝试使用nextval()函数,但序列随之增加。如何在不使用的情况下获取序列的最后一个值nextval()功能?

或者有一个简单的方法可以做到这一点?


RETURNING

这是可能的单程往返到数据库:

INSERT INTO tbl(filename)
VALUES ('my_filename')
RETURNING tbl_id;

tbl_id通常是一个serial or IDENTITY(Postgres 10 或更高版本)列 https://stackoverflow.com/a/9875517/939860. 手册中有更多内容 https://www.postgresql.org/docs/current/sql-insert.html.

显式获取值

If filename需要包括tbl_id(冗余地),您仍然可以使用单个查询。

Use lastval() https://www.postgresql.org/docs/current/functions-sequence.html或者更具体的currval() https://www.postgresql.org/docs/current/functions-sequence.html:

INSERT INTO tbl (filename)
VALUES ('my_filename' || currval('tbl_tbl_id_seq')   -- or lastval()
RETURNING tbl_id;

See:

  • 同一 INSERT 期间另一列中串行列的参考值 https://stackoverflow.com/questions/12433075/reference-value-of-serial-column-in-another-column-during-same-insert/12433446#12433446

如果在此过程中可以推进多个序列(即使通过触发器或其他副作用)sure方法是使用currval('tbl_tbl_id_seq').

序列名称

The 字符串字面量 'tbl_tbl_id_seq'在我的例子中应该是actual序列的名称并被转换为regclass,如果在当前中找不到该名称的序列,则会引发异常search_path https://stackoverflow.com/a/9067777/939860.

tbl_tbl_id_seq是自动生成的表的默认值tbl带串行列tbl_id。但没有任何保证。列默认值可以从中获取值any序列(如果如此定义)。如果创建表时使用默认名称,Postgres 将根据简单的算法选择下一个可用名称。

如果你不这样做knowa 的序列名称serial列,使用专用功能pg_get_serial_sequence() https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE。可以即时完成:

INSERT INTO tbl (filename)
VALUES ('my_filename' || currval(pg_get_serial_sequence('tbl', 'tbl_id'))
RETURNING tbl_id;

db<>fiddle
Old sqlfiddle http://www.sqlfiddle.com/#!15/7a179/3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL 序列的下一个值? 的相关文章

随机推荐

  • 使用正则表达式清除工作区中的变量(例外)

    我想清除工作区中的所有变量 但有一些由正则表达式定义的例外 功能clear有一个附加选项 regexp clear regexp expr1 exprN清除与任何一个匹配的所有变量 列出的正则表达式 该选项仅清除变量 所以我正在寻找相反的东
  • 快速应用图像的 uibutton 动画

    我想通过依次更改按钮上的两个图像来应用动画效果 我已经应用了以下代码 但无法看到动画效果 我已经正确应用了 IBOutlets var image1 UIImage UIImage named img mic off var image2
  • Google应用程序脚本复制文档页面

    我在 Google 文档中有一个包含一页的模板文档 我想创建一个新文档 其中 N 页每页都与模板文档中的一页相同 我怎样才能做到这一点 请看一下这个帖子 https stackoverflow com questions 10692669
  • 错误:系列'对象没有属性'包含'”

    我搜索 DataFrame 的所有列 第一列除外 并添加一个带有匹配列名称的新列 Matching Columns 当我尝试在测试我的模式是否包含在一行中之前删除所有点时 我收到错误 这有效 keyword 123456789 f lamb
  • iPhone - 可以不显示键盘但仍然在 UITextField 中显示光标吗?

    我有一个自定义键盘 我想在用户点击 UITextField 时显示 但同时我想在文本字段中显示光标 如果为 canBecomeFirstResponder 返回 NO 则它不会显示默认键盘 但也不显示光标 有人可以帮我吗 Thanks 您问
  • 如何去掉 CR (^M) 并保留 LF (^J) 字符?

    我正在尝试使用 Hexl 模式手动从文本文件中删除一些特殊字符 但不知道如何在 Hexl 模式下删除任何内容 我真正想要的是删除回车符并保留换行符 Hexl 模式是执行此操作的正确方法吗 无需寻找替代 就用吧 M x delete trai
  • 该文件无法打开,因为您无权查看它(真实设备)

    我知道有人问过类似的问题 但我找不到任何可以解决我的问题的东西 就我而言 我开发了一个 iOS 应用程序 Xcode 13 4 用于从我使用选择的 CSV 文件导入和解析数据UIDocumentPickerViewController 在模
  • 是否应该尝试防范 MVC 视图中的空引用异常/索引越界异常?

    我想发表评论这个问题的 https stackoverflow com questions 1005819 can we unit test view v of mvc接受的答案 现在视图不是已经放弃了后面的代码了吗 那么你要测试什么 指出
  • 在tensorboard中创建日志目录

    我正在尝试学习如何使用张量板 我希望它在我的程序中运行 我不明白如何创建日志目录 这些是我运行张量板的线路 summary writer tf train SummaryWriter tensorflow logdir sess graph
  • 为什么使用“new DelegateType(Delegate)”?

    好吧 假设您在某个类中定义了一个委托 public delegate void StringDelegate string s 另一个类实现了一个方法 public static void StringWriter string s 在我正
  • Flutter:使构建时环境变量可用于代码

    如何让构建时环境变量可用于 Flutter 应用程序中的代码 我的具体用例是将应用程序版本号注入并将哈希提交到调试屏幕中 此信息在构建时可用 但在运行时不可用 我本来希望能够做这样的事情 flutter run dart define AP
  • 当不使用默认构造函数声明 POD 结构时会实例化什么?

    当我们的团队在 C 代码中处理有关 POD 统一成员的 valgrind 警告时 我发现了这个有趣的答案 https stackoverflow com a 5914697 629530 https stackoverflow com a
  • 位图分配在 Oreo 上如何工作,以及如何调查它们的内存?

    背景 在过去的几年里 为了检查 Android 上有多少堆内存以及使用了多少内存 您可以使用如下命令 JvmStatic fun getHeapMemStats context Context String val runtime Runt
  • 使用查询列出文件时出错

    当我尝试通过列出不同的查询条件来检索文件夹时 在 Python 中出现错误HTTP 500 Internal error 请求文件夹的代码如下 q root in parents title test mimeType applicatio
  • 使用 PyInstaller 后,FigureCanvas 未解释为 QtWidget

    我从 matplotlib 中对此示例进行了稍微修改的版本 https matplotlib org gallery user interfaces embedding in qt sgskip html https matplotlib
  • 在处理 MSpec 中的匿名方法时,是否有设置 [HostType("Moles")] 的解决方法?

    我使用 Pex 和 Moles 进行低级单元测试 但我也在探索 MSpec 进行业务逻辑验证 并希望继续使用 Moles 来保持一致性 我认为问题在于 MSPec 使用匿名方法 因此无法应用 HostType Moles 属性 例如 Bec
  • Javascript选择多个选项[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个带有选择框的表单 允许多个选项 用户保存这些选项后 会将它们存储在数据库表中 然后我可以读取这个数据库表以获取他们再次选择的选
  • IE7
  • 悬停之外的项目符号/数字
  • 此处的另一篇文章的后续内容 IE7 li 项目符号或数字显示在 div 外部 https stackoverflow com questions 6076730 ie7 li bullet or number shown outside o
  • 在大型 C++ 遗留应用程序中查找“死代码”[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我目前正在开发一个大型且古老的 C 应用程序 在我之前已有许多开发人员 项目中有很多 死代码 类和函数
  • PostgreSQL 序列的下一个值?

    我的 Codeigniter 网站使用 PostgreSQL 我正在使用杂货杂货进行添加 编辑和删除操作 在进行编辑或添加时 我想根据内容的 ID 动态重命名上传的文件 我可以使用杂货做到这一点callback after upload功能