在 postgres 中生成唯一 ID

发布于 2024-10-27 11:52:30 字数 208 浏览 2 评论 0原文

有没有办法在 postgres 中生成唯一的 id?假设我有两个文件:

文件 1:
a、b、c
d、e、f

文件2:
h、i、j
a、f、h

和我想将它们插入到同一个表中(这应该是可能的,因为它们具有相同数据类型的相同数量的元素),但稍后仍然能够单独获取它们。我可以让 postgresql 为我生成一个唯一的 id 吗?

Is there a way to generate an unique id in postgres? Suppose I have a two files:

file 1:
a, b, c
d, e, f

file2:
h, i, j
a, f, h

and I want to insert them into the same table (which should be possible because they have the same number of elements with same data type) but still be able to obtain them separately later. Can I get postgresql to generate an unique id for me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

与他有关 2024-11-03 11:52:30

你一定可以!您可以创建一个 loaded_files 表并存储您正在加载的文件的名称。从 loaded_files 检索 id 并使用它将数据插入到 file_items 表中。

您所要求的是一种通常在使用应用程序代码或多个 SQL 语句加载数据期间解决的解决方案。

You sure can! You can create a loaded_files table and store the name of the file you're loading. Retrieve the id from loaded_files and use that to insert the data into your file_items table.

What you're asking for is a solution that is usually solved during data loading with either application code or else multiple SQL statements.

一杯敬自由 2024-11-03 11:52:30

是的,有一种方法可以在 postgres 中生成唯一的 id。听起来你需要的只是一个 sequence

例如:

create sequence file_id;

< br>
然后每次加载文件时使用 nextval('file_id') 。使用 nextval('file_id') 后,您可以使用 currval('file_id') 返回值而不增加序列

Yes, there is a way to generate an unique id in postgres. It sound like all you need is a sequence

For example:

create sequence file_id;

then use nextval('file_id') each time you load a file. Once you have used nextval('file_id'), you can use currval('file_id') to return the value without incrementing the sequence

水水月牙 2024-11-03 11:52:30

是的,假设您希望唯一的 ID 作为主键:

CREATE TABLE my_table (id SERIAL PRIMARY KEY,
                       your_other_fields... );

SERIAL 说明符会自动为您执行以下操作:

CREATE SEQUENCE my_seq START 1;
CREATE TABLE my_table (id integer PRIMARY KEY DEFAULT nextval('my_seq'));

这将以 id = 1 开始行并递增在每个插入物上。

Yes, assuming you want the unique Id to be the primary key:

CREATE TABLE my_table (id SERIAL PRIMARY KEY,
                       your_other_fields... );

The SERIAL specifier automatically does the following for you:

CREATE SEQUENCE my_seq START 1;
CREATE TABLE my_table (id integer PRIMARY KEY DEFAULT nextval('my_seq'));

Which will start your rows off with id = 1 and incrementing on each insert.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文