Рассмотрим следующую таблицу:SQL: NOT NULL ограничение на множестве столбцов
CREATE TABLE user(
first_name text,
last_name text,
...
)
Я хотел бы иметь возможность добавлять пользователей либо имя, фамилию, или оба - но я выиграл 't разрешить пользователю без какого-либо имени. Другими словами (спасибо, @wildplasser) - по крайней мере один столбец не должен быть NULL.
INSERT INTO user(first_name, last_name) VALUES ("foo", NULL); # 1. OK
INSERT INTO user(first_name, last_name) VALUES ("foo", "bar"); # 2. OK
INSERT INTO user(first_name, last_name) VALUES (NULL, "bar"); # 3. OK
INSERT INTO user(first_name, last_name) VALUES (NULL, NULL); # 4. NOT OK
Очевидно, NOT NULL
ограничения на каждый столбце отключат примеры 2 и 3.
Как я могу выразить NOT NULL
ограничения на наборе столбцов в SQL?
Одним из методов является создание триггера, который проверяет оба столбца, и если оба столбца равны нулю, создайте исключение. – NullEverything
Вы имеете в виду: * как минимум * один из столбцов должен быть BOT NULL? – wildplasser
будет [это] (http://www.postgresql.org/message-id/[email protected]) помочь? –