postgresql - Postgres:如何根据字符串生成唯一编号?
问题描述
我需要在PostgreSQL中进行查询,它将放入一个具有BIGINT类型的列,一个值,这个值应该从两个相邻列的数据连接中唯一获得,并且在其中,记录存储在行中. 这些行不是数字,而只是文字。可能吗?
解决方案
不需要生成任何东西。创建一个数据类型为 bigint 的序列/标识列。只允许 Postgres生成数字。然后如前所述,在 2 个字符串上创建一个唯一约束。
-- Postgres v10 and update
create table some_table( st_id bigint generated always as identity
, col_1 varchar
, col_2 varchar
, constraint some_table_pk
primary key (st_id)
, constraint some_table_bk
unique (col_1, col_2)
) ;
-- For prior to v10
create table some_table( st_id bigserial
, col_1 varchar
, col_2 varchar
, constraint some_table_pk
primary key (st_id)
, constraint some_table_bk
unique (col_1, col_2)
) ;