如何删除未使用的序列?

2023-11-26

我们正在使用 PostgreSQL。我的要求是从我的数据库中删除未使用的序列。 例如,如果我通过应用程序创建任何表,则会创建一个序列,但为了删除该表,我们也不会删除该序列。如果想要创建相同的表,则正在创建另一个序列。

示例:表:file;自动创建的序列id coumn: file_id_seq

当我删除表时file并再次使用相同的名称创建它,正在创建一个新序列(即file_id_seq1)。通过这种方式,我在我的应用程序数据库中积累了大量未使用的序列。

如何删除这些未使用的序列?


自动创建的序列serial列是自动删除,当列(或其表)被删除时。你所描述的问题一开始就不应该存在。仅有的very旧版本的 PostgreSQL 没有这样做。 7.4 或更早版本?

问题的解决方案

该查询将生成用于删除所有“未绑定”序列的 DDL 命令在数据库中执行:

SELECT string_agg('DROP SEQUENCE ' || c.oid::regclass, '; ') || ';' AS ddl
FROM   pg_class       c
LEFT   JOIN pg_depend d ON d.refobjid = c.oid
                       AND d.deptype <> 'i'
WHERE  c.relkind = 'S'
AND    d.refobjid IS NULL;

演员阵容regclass in c.oid::regclass根据当前的需要,自动对序列名称进行模式限定search_path. See:

  • 如何检查给定模式中是否存在表
  • search_path 如何影响标识符解析和“当前模式”

Result:

DROP SEQUENCE foo_id_seq;
DROP SEQUENCE bar_id_seq;
...

执行结果以删除未绑定到串行列(或任何其他列)的所有序列。在这里研究一下列和表的含义。

Careful!这些序列可能会以其他方式使用。在某些用例中,序列被创建为独立对象。例如,如果您希望多列共享一个序列。你应该确切地知道你在做什么。

然而,你cannot删除绑定到 a 的序列serial专栏这样。所以操作是安全的this尊重。

DROP SEQUENCE test_id_seq;

Result:

ERROR:  cannot drop sequence test_id_seq because other objects depend on it
DETAIL:  default for table test column id depends on sequence test_id_seq
HINT:  Use DROP ... CASCADE to drop the dependent objects too.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何删除未使用的序列? 的相关文章

  • 如何在 Postgresql 中将 GIST 或 GIN 索引与 hstore 列一起使用?

    我正在使用 postgresql 9 3 的 hstore 我正在尝试对 hstore 列使用索引就像文档所述 http www postgresql org docs 9 3 static hstore html 我的问题是索引似乎没有被
  • 何时计划 (SELECT) 查询?

    在 PostgreSQL 中 什么时候计划 SELECT 查询 Is it 在报表准备时 或者 在处理 SELECT 开始时 或者 别的东西 我问的原因是 Stackoverflow 上有一个问题 相同的查询 两种不同的方式 性能截然不同
  • Postgres 多重连接

    这是一个 postgres 数据库 我试图从品种表中提取狗的品种名称 卡斯罗 拉布拉多等 以根据动物表中的外键进行显示 我的问题是动物表有两个外键指向这个单一品种表 并且我的查询不断出错 第一个品种名称将根据左连接返回 但第二个品种名称无法
  • Postgres LEFT JOIN 与 WHERE 条件

    我需要使用 where 条件左连接两个表 Table time table id rid start date end date 1 2 2017 07 01 00 00 00 2018 11 01 00 00 00 2 5 2017 01
  • 使用 unnest() 返回行?

    我尝试在完成后返回一组行UPDATE 像这样的东西 UPDATE Notis new noti SET notis noti record type FROM SELECT FROM Notis WHERE user id 2 FOR UP
  • 找出每个玩家最长的满分连续记录

    我得到以下结果SELECT查询与ORDER BY player id ASC time ASC在 PostgreSQL 数据库中 player id points time 395 0 2018 06 01 17 55 23 982413
  • 将查询结果作为 CSV 文件从 Docker PostgreSQL 容器导出到本地计算机

    我不确定这是否可能 或者我是否做错了什么 因为我对 Docker 还很陌生 基本上 我想将 PostgreSQL docker 容器内的查询结果作为 csv 文件导出到本地计算机 这就是我到目前为止所得到的 首先 我使用以下命令运行 Pos
  • PostgreSQL 无法从服务器接收数据:软件导致连接中止 (0x00002745/10053)

    我尝试在 pgAdmin 中建立与 PostgresQL 服务器的连接 我总是收到这样的消息 could not receive data from server Software caused connection abort 0x000
  • Python SQLAlchemy 用户身份验证失败

    我尝试使用 SQLAlchemy 连接 PostgreSQL 数据库 我创建了一个像这样的新角色 首先 我使用以下命令登录到 postgres 帐户 sudo i u postgres 接下来 发出命令 createuser interac
  • 如何使用准备好的语句在 postgresql 中插入带有时区的时间戳?

    我正在尝试使用准备好的语句将一个字符串插入到数据库的带有时区字段的时间戳中 其中包括日期 时间和时区 问题是 Timestamp valueof 函数没有考虑字符串包含的时区 因此会导致错误 接受的格式是 yyyy m m d d hh m
  • 按时间范围聚合

    我有一个数据集 其中包含日期 yyyy mm dd 和时间 h m s 以及温度 float 作为单独的列 我想通过平均函数聚合每天的温度值 问题是 我不知道如何查询时间属性来表示例如聚合 h m 0 5 s and h m 5 10 s
  • 错误:没有名为 psycopg2.extensions 的模块

    我正在尝试为我的 django 项目设置一个 PostgreSQL 数据库 由于对上一个问题的答复 我相信我现在已经完成了为 django 项目设置 postgreSQL 数据库时出现问题 https stackoverflow com q
  • 节点 PostgreSQL 客户端查询超时

    我正在使用节点包pg对于 postgres here https github com brianc node postgres npm i pg var pg require pg 我正在查询一个不属于我的大型集群 在某些条件下可能会失败
  • Django 数据库迁移与 postgres 失败

    我对模型做了一些更改 然后运行了 python 管理 py makemigrations python 管理 py 迁移 我得到了这个回溯 Operations to perform Synchronize unmigrated apps
  • 通过 JDBC 与 CLI 使用 MIT Kerberos 连接到 PostgreSQL 9.4 时出错

    我已经使用 MIT Kerberos 5 设置了 PostgreSQL 9 4 并且可以使用 psql 在 CLI 上连接 提交指纹后 我的委托人是 bgiles postgres REALM pg hba conf 有 host all
  • Postgres 上的 C 语言环境和 Posix 语言环境有什么区别?

    我知道 Postgres 上的数据库区域设置负责国家字符的正确顺序 正确的小写 大写等 但为什么有两种语言中立的语言环境 posix and c 它们之间有什么区别 还是只是一个中立的语言环境有两个不同的名称 UPDATE正如 Magnus
  • 如何手动设置auto_increment的下一个值?

    我手动向表中添加了一些行 并且还手动设置了 ID 自动增量 现在 当我尝试通过我的应用程序将新行添加到数据库表中时 我收到错误 创建的 ID 值已存在 如何手动设置下一个ID值 例如 在表中我必须有ID 那么如何告诉PostgreSQL 下
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • 如何比较 Postgresql 中日期时间字段中的日期?

    在比较 postgresql Windows 中的版本 9 2 4 中的日期时 我遇到了一个奇怪的情况 我的表中有一列说update date与类型timestamp without timezone 客户可以仅使用日期搜索此字段 例如 2
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS

随机推荐

  • Kubernetes 中的有状态服务的分片负载均衡

    我目前正在从 Service Fabric 切换到 Kubernetes 想知道如何进行自定义和更复杂的负载平衡 到目前为止 我已经了解到 Kubernetes 提供的 服务 可以为隐藏在其后面的 Pod 进行负载平衡 但这只能以更简单的方
  • 如何在 XAMPP for Windows 上安装 PHP 的 V8J?

    几天来一直在努力寻找一种在 Windows 版 XAMPP 上安装 V8J 的简单方法 但没有成功 我已经下载了最新的 XAMPP 版本和 PHP 版本 7 2 0 VC15 并按照此博客文章中的说明进行操作 https blog xeno
  • MXCSR控制寄存器的范围?

    我想知道什么是MXCSR 控制寄存器中存储的值的生命周期 包括非正规浮点数的 FTZ 和 DAZ 配置 它是否在线程范围内 或者对于 CPU FPU 上的所有处理都是通用的 我想知道的是 是否需要在线程池的每个线程开始时或在应用程序中根据需
  • 在 Python 中将日期从 mm/dd/yyyy 转换为另一种格式

    我正在尝试编写一个程序 要求用户以 mm dd yyyy 格式输入日期并进行转换 因此 如果用户输入 01 01 2009 程序应显示 2009 年 1 月 1 日 这是到目前为止我的程序 我成功地转换了月份 但其他元素周围有一个括号 因此
  • 如何检查 AWS Cognito 中是否已存在电子邮件?

    我正在使用 AWS Cognito 进行登录 注册 我们还有两步之遥 1 它会要求提供电子邮件 2 如果电子邮件已经存在 那么它会询问密码 否则它会说创建密码 此步骤上的按钮根据上述条件显示 无论是 登录 还是 注册 在用户输入电子邮件后
  • 沿坐标列表给出的路径向量化半正矢距离计算

    我有一个坐标列表 可以使用以下方法计算所有点之间的距离矩阵半正矢距离公制 坐标为numpy array形状的 n 2 of latitude longitude pairs 16 34576887 107 90942116 12 49474
  • 从 CreateAnonymousThread 更新 VCL 组件

    看来哪一个同步不能从使用创建的线程中使用创建匿名话题 所以问题是 How i can update a VCL component from inside of a Thread created using CreateAnonymousT
  • 非导出活动:在模拟器上启动;手机上的安全异常

    我有一个非出口活动在我的项目中 如果我尝试使用以下命令在手机上启动它adb adb shell am start n packagename activityname 我收到错误 java lang SecurityException Pe
  • 使用 PDO 准备好插入后获取最后一个插入 ID

    我在一个新项目中使用 PHP PDO 和 PostgreSQL 给定以下函数 如何返回刚刚插入的行的 id 它并不像现在看起来的那样工作 function adauga administrator detalii global db ult
  • PHP 中的语音识别?

    我正在寻找 PHP 中的语音识别 我有很多 wav 文件 10 15 秒 我希望语音识别能够识别每个 wav 文件中的 1 或 2 个单词 然后将其标记到数据库或 csv 所有文件都有相同的声音和口音 同一个人哈哈 伪代码示例 voice
  • Mono.Cecil:从其他程序集调用GENERIC基类的方法

    我正在跟进我之前的问题 Mono Cecil 从其他程序集中调用基类的方法 我正在做同样的事情 但如果我的基类是通用的 它就不起作用 in Assembly A class BaseVM
  • 从 Android 中的本地资源加载 jQuery 以用于远程 html 页面

    我正在尝试从 Android webview 读取存储在资产中的本地 javascript 文件 jQuery 我不想加载 with base url 因为我的图像和 html 是远程提供的 总结一下 将本地 jQuery 在资产文件夹中
  • AttributeError:未知属性 color_cycle

    我正在学习 pandas 并尝试绘制id列 但我收到错误AttributeError Unknown property color cycle和空图 该图仅出现在交互式 shell 中 当我作为脚本执行时 我得到相同的错误 除了图表没有出现
  • 使用 MSAL 的访问令牌/刷新令牌

    我对 OAuth2 以及 AccessToken 和 RefreshToken 的概念比较熟悉 使用 ClientApplicationBase AcquireTokenSilentAsync 时 MSAL 似乎正在为我们做一些工作 我不清
  • MVVM Light Messenger 多次执行

    我正在使用 MVVM Light 并使用消息在 ViewModel 之间进行通信 让 ViewModel 知道何时可以执行某些操作 我的问题是我注册了一条消息 然后它多次收到它 因此 为了防止我的程序多次执行某些操作 我必须创建布尔标志来查
  • 使用由明确定义的归纳定义的递归函数进行计算

    当我使用Function在 Coq 中定义一个非结构递归函数 当要求进行特定计算时 生成的对象会表现得很奇怪 事实上 不是直接给出结果 而是Eval compute in 指令返回一个相当长 通常为 170 000 行 的表达式 Coq 似
  • 打开带有空格的本地 Android 文件

    我正在尝试使用意图在 Android 4 0 中打开本地文件 以下是执行该操作的代码 只要文件没有特殊空格 例如 如果文件是 data data com xxxx yyyy files Downloads Documents Product
  • 什么是 kthreadd_task

    在kthread create的定义中 有一个任务被唤醒 有谁知道这个任务在做什么吗 struct task struct kthread create struct kthread create info create create th
  • java部分类

    小序言 我是 1 4 jdk 的优秀 java 开发人员 之后我切换到了另一个平台 但在这里我遇到了问题 所以问题是关于jdk 1 6 或更高版本 我有3个耦合类 耦合的本质与本机方法有关 波纹管是这 3 类的示例 public inter
  • 如何删除未使用的序列?

    我们正在使用 PostgreSQL 我的要求是从我的数据库中删除未使用的序列 例如 如果我通过应用程序创建任何表 则会创建一个序列 但为了删除该表 我们也不会删除该序列 如果想要创建相同的表 则正在创建另一个序列 示例 表 file 自动创