Как видно из названия, я хочу иметь уникальный идентификатор в качестве первичного ключа, но по нескольким схемам. Я знаю о UUID, но это слишком дорого.Уникальный идентификатор в нескольких схемах
Есть ли способ работать с этим вокруг сериала?
Как видно из названия, я хочу иметь уникальный идентификатор в качестве первичного ключа, но по нескольким схемам. Я знаю о UUID, но это слишком дорого.Уникальный идентификатор в нескольких схемах
Есть ли способ работать с этим вокруг сериала?
Вы можете создать глобальную последовательность и использовать ее в своей таблице вместо автоматической последовательности, которую создает столбец 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
столбцов. «Последовательная последовательность» автоматически отбрасывается, если соответствующий столбец (или таблица) отбрасывается, что не является тем, что вы хотите с глобальной последовательностью.
Однако есть один недостаток: вы не можете убедиться, что дублирующиеся значения в этих двух таблицах вставлены вручную. Если вы хотите, чтобы последовательность была всегда используется для вставки значений, вы можете создать триггер, который всегда извлекает значение из последовательности.
вы можете добавить столбец с идентификатором схемы и создать PK на двух столбцах. этот путь id будет серийным, но keypair всегда будет уникальным между схемами –