Документация Postgres для создания внешних ключей решает ваш вопрос:
Наконец, следует отметить, что внешний ключ должен ссылаться на столбцы, которые либо являютсяпервичный ключ или сформировать уникальное ограничение .Если внешний ключ ссылается на уникальное ограничение, есть некоторые дополнительные возможности относительно того, как сопоставляются нулевые значения.
Итак, вы, безусловно, можете создать внешний ключ в таблице order
, которая ссылается на customer_email
в таблице customer
, но для поля электронной почты должно быть установлено уникальное ограничение.Итак, следующее определение для таблицы customer
должно работать:
CREATE TABLE customer (
customer_id INTEGER PRIMARY KEY NOT NULL,
customer_email VARCHAR(225),
customer_name VARCHAR(225),
customer_last_name VARCHAR(225),
CONSTRAINT email_unique UNIQUE (customer_email)
);