多个模式中的唯一标识符

时间:2016-06-13 07:07:02

标签: postgresql schema unique primary-key

正如标题所示,我想要一个唯一的ID作为主键,但是需要多个模式。我知道UUID,但它太贵了。

有没有办法围绕连续剧进行操作?

1 个答案:

答案 0 :(得分:1)

您可以创建一个全局序列,并在表格中使用该序列,而不是serial列创建的自动序列。

create schema global;
create schema s1;
create schema s2;

create sequence global.unique_id;

create table s1.t1
(
   id integer default nextval('global.unique_id') primary key
);

create table s2.t1
(
   id integer default nextval('global.unique_id') primary key
);

serial列的区别在于,序列unique_id不会“知道”id列使用它。如果丢弃了相应的列(或表),则会自动删除“序列序列”,这不是您想要的全局序列。

但有一个缺点:您无法确保手动插入这两个表中的重复值。如果要确保序列始终用于插入值,则可以创建始终从序列中提取值的触发器。