основе id, добавив в нее префиксом какой-нибудь текст?
id - serial
code - varchar
чтобы в итоге получилось
id, code
1, TEST-1
2, TEST-2
пробовал GENERATED ALWAYS AS ('TEST-' || id) STORED
ругается:
generation expression is not immutable
Можно обернуть ваше выражение в функцию и объявить ее иммутабельной. Это, конечно, будет ложь, но пока вы не будете менять айдишники и требовать изменения генерируемой колонки в след, то будет работать
Или просто сделайте view поверх таблицы и работайте с ним.
Вот это точно не стоит делать.
ок, как лучше это сделать? хочется чтобы при вставке данных заполнялась колонка code с кодом на основе PK RETURN (prefix || LPAD(id::varchar, 8, '0'));
DEFAULT 'prefix'||nextval('...')
серьезно? все так просто? спасибо
Ну, примерно, скобочки там расставить возможно. Но в общем -- ничего особенно магического в nextval для обычного serial нет, никаких требований вроде стабильности к выражэнию не предъявляется.
Обсуждают сегодня