You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取PostgreSQL中表的唯一固定ID值

为PostgreSQL表生成唯一固定数字ID的方案

方案一:纯查询实现(无需新建表)

利用窗口函数结合固定排序规则生成ID,只要表名和过滤条件不变,ID就会保持固定。适合临时需求或表名不会变更的场景:

SELECT
  dense_rank() OVER (ORDER BY table_name) AS id,
  table_name
FROM information_schema.tables
WHERE table_schema = 'public' -- 替换为你的目标schema
  AND table_name IN ('t_aa', 't_bb', 't_cc'); -- 按需过滤目标表

注意:如果后续修改表名,对应的ID会随之变化;若新增表,需调整过滤条件保证ID稳定性。

方案二:新建映射表实现(稳定可控,推荐用于advisory lock)

因为advisory lock密钥需要长期固定,避免元数据变化导致锁逻辑混乱,建议新建专门的映射表存储ID与表名的对应关系:

  1. 创建映射表:
CREATE TABLE table_lock_ids (
  id INTEGER PRIMARY KEY,
  table_name VARCHAR(64) UNIQUE NOT NULL
);
  1. 插入固定的ID与表名映射:
INSERT INTO table_lock_ids (id, table_name)
VALUES (1, 't_aa'), (2, 't_bb'), (3, 't_cc');
  1. 查询获取ID:
SELECT id, table_name FROM table_lock_ids;

这种方式完全由你控制ID分配,不会受系统元数据变更(如表名修改、系统升级)影响,是作为advisory lock密钥的最优选择。

内容的提问来源于stack exchange,提问作者user15397083

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:36:05