Поскольку фактическое значение идентификатора комментария не интересует вас (просто тот факт, что он есть и он уникален), serial
- хороший выбор для такого столбца. Обратите внимание, что в современных PostgreSQL-базах данных (начиная с 7.3) создание serial
автоматически не означает, что у него будет уникальное ограничение, поэтому вам придется обрабатывать это явно. Например .:
CREATE TABLE comments (
comment_id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(id), -- You should probably also index it
comment VARCHAR(200) -- Or any other reasonable size
)
EDIT:
Чтобы ответить на этот вопрос в комментариях, подобное поведение может быть создана для UUID
колонки, придав ему значение по умолчанию для вновь создаваемого UUID
.
Во-первых, вам нужно будет установить пакет postgres-contrib` (если он еще не установлен). Например, на дистрибутивы Linux на основе Red Hat, вы можете запустить (как корень):
$ dnf install postgresql-contrib
Тогда из привилегированного пользователя, вам необходимо создать расширение:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Это создаст generate_uuid_v1
функцию вы можете использовать:
CREATE TABLE comments (
comment_id UUID DEFAULT UUID_GENERATE_V1() PRIMARY KEY,
user_id INT REFERENCES users(id), -- You should probably also index it
comment VARCHAR(200) -- Or any other reasonable size
)
«uuid» и «SERIAL» могут использоваться в postgres. SERIAL создает последовательность и присваивает столбцу при создании таблицы –
спасибо за объяснение! – user1354934