#sql #postgresql #ddl
#sql #postgresql #ddl
Вопрос:
Как описано в заголовке вопроса, мы можем добавить 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
ограничения (или других ограничений)? - Повлияет ли это на то, как таблицы ссылаются друг на друга?
Спасибо.
Ответ №1:
Разницы нет вообще.
Само название, PRIMARY KEY, предполагает, что это не что-то определенное на уровне одного столбца.
То, что вы называете «на уровне столбца», на самом деле является не более чем удобным синтаксисом для случаев, когда первичный ключ состоит из одного столбца.
Кстати, первичный ключ означает NOT NULL UNIQUE
, поэтому вы можете пропустить определение их как UNIQUE
.
Ответ №2:
-
Как первичный ключ, так и уникальный ключ являются ограничениями целостности объекта, которые похожи во многих аспектах. Однако у них есть своя изрядная доля различий, когда дело доходит до программирования. Оба являются важными концепциями, которые в основном используются в системах управления базами данных.
-
Первичный ключ — это набор из одного или нескольких столбцов / полей таблицы базы данных, которые однозначно идентифицируют запись в таблице. Уникальный ключ, с другой стороны, не позволяет двум записям иметь одинаковые значения в столбце.
-
Концептуально, для данной таблицы может быть только один ПЕРВИЧНЫЙ КЛЮЧ, в то время как для таблицы может быть более одного УНИКАЛЬНОГО КЛЮЧА.
-
Первичный ключ должен быть уникальным, но уникальный ключ не обязательно должен быть первичным ключом.
-
Первичный ключ не может принимать значения NULL в таблице, тогда как уникальный ключ может допускать значения NULL, за исключением только одного NULL в таблице.
Вы можете сослаться на статью о:http://covelign.com/3Y8P