【发布时间】:2011-03-27 18:36:50
【问题描述】:
有没有办法在 postgres 中生成唯一的 id?假设我有两个文件:
文件 1:
a, b, c
d、e、f
文件2:
h, i, j
a, f, h
并且我想将它们插入到同一个表中(这应该是可能的,因为它们具有相同数量的具有相同数据类型的元素),但以后仍然能够单独获取它们。我可以让 postgresql 为我生成一个唯一的 id 吗?
【问题讨论】:
标签: c++ linux postgresql
有没有办法在 postgres 中生成唯一的 id?假设我有两个文件:
文件 1:
a, b, c
d、e、f
文件2:
h, i, j
a, f, h
并且我想将它们插入到同一个表中(这应该是可能的,因为它们具有相同数量的具有相同数据类型的元素),但以后仍然能够单独获取它们。我可以让 postgresql 为我生成一个唯一的 id 吗?
【问题讨论】:
标签: c++ linux postgresql
你当然可以!您可以创建一个loaded_files 表并存储您正在加载的文件的名称。从loaded_files 中检索id 并使用它将数据插入到您的file_items 表中。
您要求的是一种解决方案,通常在数据加载期间使用应用程序代码或多个 SQL 语句解决。
【讨论】:
是的,有一种方法可以在 postgres 中生成唯一 ID。听起来你只需要一个sequence
例如:
create sequence file_id;
然后在每次加载文件时使用nextval('file_id')。一旦你使用了nextval('file_id'),你可以使用currval('file_id')返回值而不增加序列
【讨论】:
是的,假设您希望唯一的 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 开始您的行,并在每次插入时递增。
【讨论】:
【讨论】: