在 postgres 中生成唯一 ID
有没有办法在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你一定可以!您可以创建一个
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 theid
fromloaded_files
and use that to insert the data into yourfile_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.
是的,有一种方法可以在 postgres 中生成唯一的 id。听起来你需要的只是一个 sequence
例如:
< 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:
then use
nextval('file_id')
each time you load a file. Once you have usednextval('file_id')
, you can usecurrval('file_id')
to return the value without incrementing the sequence是的,假设您希望唯一的 ID 作为主键:
SERIAL
说明符会自动为您执行以下操作:这将以
id = 1
开始行并递增在每个插入物上。Yes, assuming you want the unique Id to be the primary key:
The
SERIAL
specifier automatically does the following for you:Which will start your rows off with
id = 1
and incrementing on each insert.解决方案如何在 Ubuntu 10.04 上使用 PostgreSQL 8.4.4 生成 uuid? 适合你吗?
Would the solution at How to generate uuid with PostgreSQL 8.4.4 on Ubuntu 10.04? work for you?