@Anton238

Что будет с первичным ключом если создать таблицу без указания PRIMARY KEY?

Я создавал таблицы и с явным указанием primary key для столбца, и вообще без указания primary key. Но первичный ключ является обязательным для каждой таблицы. Он ставится автоматически? Если да, то куда? На первый столбец?
  • Вопрос задан
  • 4859 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Но первичный ключ является обязательным для каждой таблицы

С точки зрения реляционной теории и нормальных форм в частности.

С точки зрения SQL - не обязателен. Таблица может не объявлять первичный либо даже какой-то уникальный ключ. Дальше - детали реализации.

В PostgreSQL никакой даже суррогатный первичный ключ в этом случае создаваться не будет. Адресация строк в PostgreSQL выполняется по TID (tuple ID) - физическому адресу строки в датафайле (и потому TID уникален в таблице), в том числе при поиске по первичному ключу. Но TID - не индекс, никак не связан с хранимыми данными и не накладывает каких-либо ограничений на данные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы