Как я могу создать серийный идентификатор в виде строки с общим префиксом (ie tag_1, tag_2, tag_3) в Postgres - PullRequest
0 голосов
/ 16 июня 2020

В Postrges я знаю, как создать таблицу со столбцом с серийным (номером) id:

CREATE TABLE Tag (
  id SERIAL PRIMARY KEY,
  name TEXT NOT NULL
);

Я предпочитаю, чтобы мои идентификаторы имели удобочитаемый аспект. Обычно я делаю что-то вроде tag_1, tag_2, tag_3 usr_1, usr_2, usr_3.

Я видел инструкции о том, как сгенерировать uuids ( Создание UUID в Postgres для оператора Insert? ), но я на самом деле это не нужно. Серийного номера basi c более чем достаточно, я просто хочу добавить префикс tag_ к началу.

Как я могу создать серийный идентификатор в виде строки с общим префиксом?

1 Ответ

1 голос
/ 16 июня 2020

Вы можете сделать это с помощью последовательности, которую вы можете добавить в свою таблицу как значение по умолчанию, объединенное через || с желаемым префиксом, например,

CREATE SEQUENCE tag_seq START WITH 1;

CREATE TABLE tag 
    (id TEXT NOT NULL DEFAULT 'tag_'||nextval('tag_seq'::regclass)::TEXT, 
    name TEXT);

INSERT INTO tag (name) VALUES ('foo'),('bar');    
SELECT * FROM tag;
  id   | name 
-------+------
 tag_1 | foo
 tag_2 | bar
(2 Zeilen)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...