Использовать значение серийного столбца PK как значение по умолчанию для другого ненулевого столбца - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть таблица с простым иерархическим отношением родитель-потомок к себе. Вместо использования вложенного набора я добавил столбец root_id, чтобы можно было загружать всех потомков одного корня одним запросом.

create table tree (
    id          serial                  primary key,
    root_id     int     not null        default id,  -- error
    parent_id   int,
    ...
);

Я бы хотел сделать этот столбец not null, но значением для новых корней будет значение собственного первичного ключа корня, которое недоступно до вставки. Есть ли способ использовать значение первичного ключа строки в качестве значения по умолчанию для столбца root_id?

1 Ответ

0 голосов
/ 19 апреля 2019

После описания таблицы, чтобы увидеть значение по умолчанию для столбца id и предположив синтаксис, я обнаружил, что вы можете использовать текущее значение последовательности в качестве значения по умолчанию.

root_id     int     not null        default currval('tree_id_seq'::regclass)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...