@shupike

Нужен ли первичный ключ в таблицах PostgreSQL?

Добрый день! Такой вопрос - пытаюсь старую базу MS Access перевести в PostgreSQL (тупо руками пересоздаю таблицы и поля) и вот что не понял - у меня есть таблица в MS Access без ключевого поля, то есть просто служит для связанности при запросах. Я создал аналогичную таблицу в pgadmin, но вносить в нее данные без первичного ключа не удается. Получается, что нужно добавить в любом случае поле первичного ключа и вручную потом отслеживать его значение при добавлении/удалении записей в этой таблице? А почему все это работает без первичного ключа в MS Access? Спасибо.
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ответы на вопрос 2
AshBlade
@AshBlade
Просто хочу быть счастливым
Почему работает в Access - потому что это другая БД. Поведение может различаться.

Что касается обязательности ключевого поля - странно. Таблицу можно создать и без него.

Предполагаю, что эта таблица ссылается через references на столбец другой таблицы. В таком случае, на последнее должно стоять ограничение уникальности - иначе как понять на какую строку ссылаться.
Ответ написан
@mrfreeman2
Первичный ключ — это свойства строки, которые однозначно идентифицируют эту запись.
Первичное значение — не обязательно 1 поле, и не обязательно придумывать новое поле, вероятнее всего, то, что есть уже достаточно, и ключ можно составить из того, что есть.
Под капотом первичный индекс — это такой же индекс, но значения в нем уникальны и не могут быть null.
В целом без первичного ключа можно, но первичный ключ нужен для реплицирования данных, для миграции данных при обновлении версии pg и банально для предотвращения появления дублей записи. Итог: лучше его иметь, чем не иметь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы