У меня вопрос, связанный с SQL, точнее с PostgreSQL. В настоящее время я пытаюсь создать некоторые условные ограничения, и мне удалось создать условное ограничение в одной таблице. В приведенном ниже примере я хочу убедиться, что столбец cpf не является нулевым, только когда столбец client_type имеет значение "F".
CREATE TYPE client_type AS ENUM('F', 'J');
CREATE TABLE clients (
id SERIAL NOT NULL UNIQUE,
name varchar(255),
client_type client_type NOT NULL,
cpf varchar(11),
cnpj varchar(14),
CHECK (CASE WHEN client_type = 'F' THEN cpf IS NOT NULL END),
CHECK (CASE WHEN client_type = 'J' THEN cnpj IS NOT NULL END)
);
Мой вопрос, это можно сделать с помощью связанных таблиц?
Например: у меня есть таблица с именем aditional_info , у которой есть внешний ключ, ссылающийся на таблицу клиентов , и я хочу, чтобы некоторые столбцы aditional_info таблица не может быть нулевой, только если соответствующая строка в таблице клиентов имеет столбец со значением «F».
Возможно, я пытаюсь сделать что-то, что невозможно, поэтому, если кто-то скажет мне, достижимо ли это каким-либо образом, я буду очень благодарен!