Если вы вручную создадите последовательность и назначите ее в качестве значения по умолчанию для столбцов идентификаторов, то это сработает. Но чтобы повторно использовать существующее значение, это означало бы, что нам нужно создать триггер, который назначит существующее значение или получит новое из общей последовательности.
create sequence baz;
create table foo(id bigint default nextval('baz'), value text);
create table bar(id bigint default nextval('baz'), value date);
insert into foo (value) values ('Hello');
insert into bar (value) values (now());
insert into foo (value) values ('World');
insert into bar (value) values (now());
select 'foo', id, value::text from foo
union all
select 'bar', id, value::text from bar
И результат:
foo 1 Hello
bar 2 2018-10-29
foo 3 World
bar 4 2018-10-29
И в качестве бонуса:
drop sequence baz
ERROR: cannot drop sequence baz because other objects depend on it
Detail:
default for table foo column id depends on sequence baz
default for table bar column id depends on sequence baz
Hint: Use DROP ... CASCADE to drop the dependent objects too.
Редактировать: Если мы можем выполнить постобработку, то этот подход можно использовать для назначения значений для отсутствующих столбцов идентификаторов:
update bar
SET id = coalesce((select id from foo where bar.city_name = foo.city_name),nextval('baz'))
WHERE id is null