В чем разница между добавлением ограничения PRIMARY KEY на уровне таблицы и на уровне столбца? - PullRequest
0 голосов
/ 13 марта 2019

Как описано в заголовке вопроса, мы можем добавить ограничение PRIMARY KEY на уровне столбца:

animals=# CREATE TABLE temp (
id serial UNIQUE PRIMARY KEY);
CREATE TABLE
animals=# \d temp
                            Table "public.temp"
 Column |  Type   | Collation | Nullable |             Default
--------+---------+-----------+----------+----------------------------------
 id     | integer |           | not null | nextval('temp_id_seq'::regclass)
Indexes:
    "temp_pkey" PRIMARY KEY, btree (id)

Или на уровне таблицы:

animals=# CREATE TABLE temp_1 (
id serial UNIQUE,
PRIMARY KEY (id));
CREATE TABLE
animals=# \d temp_1
                            Table "public.temp_1"
 Column |  Type   | Collation | Nullable |              Default
--------+---------+-----------+----------+------------------------------------
 id     | integer |           | not null | nextval('temp_1_id_seq'::regclass)
Indexes:
    "temp_1_pkey" PRIMARY KEY, btree (id)

  • Есть ли заметная разница между этими двумя методами для добавления ограничения PRIMARY KEY (или других ограничений)?
  • Повлияет ли это на то, как таблицы ссылаются друг на друга?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 марта 2019
  • И первичный ключ, и уникальный ключ - это ограничения целостности объекта, которые во многих отношениях похожи.Тем не менее, они имеют свою долю различий, когда речь заходит о программировании.Оба являются основными понятиями, которые в основном используются в системах управления базами данных.

  • Первичный ключ - это набор из одного или нескольких столбцов / полей таблицы базы данных, которые однозначно идентифицируют запись в таблице.Уникальный ключ, с другой стороны, не позволяет двум записям иметь одинаковые значения в столбце.

  • Концептуально, для данной таблицы может быть только один ПЕРВИЧНЫЙ КЛЮЧ, в то время как может быть большечем один УНИКАЛЬНЫЙ КЛЮЧ для таблицы.

  • Первичный ключ должен быть уникальным, но уникальный ключ не обязательно должен быть первичным ключом.

  • Первичный ключ не может принимать значения NULL в таблице, тогда как уникальный ключ может разрешать значения NULL в таблице, за исключением только одного NULL в таблице.

Вы можете обратиться к статье: http://covelign.com/3Y8P

2 голосов
/ 13 марта 2019

Разницы нет вообще.
Само имя ПЕРВИЧНОЕ KEY предполагает, что это не что-то определенное на уровне одного столбца.

То, что вы называете "на уровне столбца"на самом деле это не более чем удобный синтаксис, когда первичный ключ состоит из одного столбца.

Кстати, первичный ключ означает NOT NULL UNIQUE, поэтому вы можете пропустить их определение как UNIQUE.

...