gpt4 book ai didi

sql - PostgreSQL 表设计——如何避免重复使用 ID

转载 作者:行者123 更新时间:2023-11-29 12:34:25 24 4
gpt4 key购买 nike

我正在使用 Postgres 数据库设计一个具有相当复杂表设计的应用程序,并且卡在了一点上,我希望有人可以提供建议。

我有几个表,每个表都有一个特征 ID(或 fid)。不同类型的实体具有不同的属性模式,因此我必须为每种类型创建不同的表。但是,我想确保 fids 在所有实体类型中都是唯一的。

如果我有三个实体类型,Entity1/2/3,由以下 3 个表表示:

Entity1             Entity2             Entity3
fid fid fid
attribute1 attribute2 attribute3

如何确保系统中的任何位置都没有重复的 fids?

谢谢!

最佳答案

PostgreSQL(和 Oracle)使用称为 Sequences 的对象来生成顺序值。与 MySQL 和 SQL Server 的序列值生成方法不同,序列不依赖于表。所以你可以定义一个单一的序列(documentation link):

CREATE SEQUENCE your_seq 

这将创建一个名为 your_seq 的序列,该序列将从 1 开始并在每次检索到下一个值时递增 1 - 如果要设置最小值和增量值,请参阅文档链接/etc 不同。

要使用它,任何 INSERT 语句都需要包括:

NEXTVAL('your_seq')

...在 INSERT 语句中的位置填充适当的列。即:

INSERT INTO entity1
(fid)
VALUES
(NEXTVAL('your_seq'))

并且,为了进一步自动化,您可以将 NEXTVAL('your_seq') 设置为所有使用它的表的默认值。

关于sql - PostgreSQL 表设计——如何避免重复使用 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com