Ограничение, чтобы проверить, является ли столбец нулевым или ссылается на другой столбец? - PullRequest
0 голосов
/ 28 июля 2011

Можно ли (в PostgreSQL) создать ограничение, которое говорит, что столбец должен иметь значение null или содержать значение из другого столбца в другой таблице? Другими словами, объединить ограничение CHECK с ограничением FOREIGN KEY?

Я хотел бы определить, что столбец должен быть нулевым или содержать значение из другого столбца. Целью в этом случае является проверка того, что выбранный пользователем язык входит в список поддерживаемых языков или не задан (оставлено как нулевое).

Итак, что-то в строках этого (что не работает):

ALTER TABLE MyTable ADD CONSTRAINT my_constraint
CHECK (languageCode IS NULL) OR (languageCode) REFERENCES Languages (languageCode)

1 Ответ

2 голосов
/ 28 июля 2011

Согласно комментарию MarcB: ограничение внешнего ключа для столбца NULLable будет выполнять то, что вы просили.

В общем, однако, наиболее распространенный способ применения «сложных» ограничений - это создание скалярной функции.с помощью логики (которая возвращает логическое значение) и ПРОВЕРКИ этой функции (передавая значение для проверки, или PK таблицы, или что-либо, что соответствует вашим потребностям).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...