Несколько предложений в одном проверочном ограничении? - PullRequest
1 голос
/ 02 декабря 2011

Я пытаюсь получить несколько предложений в одном проверочном ограничении, разделенных OR:

check (stop>start or stop = NULL)

, где start и stop являются полями меток времени. Таким образом, stop можно оставить пустым, но если оно указано, оно должно быть позже, чем start.

Я правильно понял? Я не нашел ничего в сравнении временных отметок или если OR разрешено в проверочных ограничениях.

Это в postgres 8.4.8.

Ответы [ 2 ]

7 голосов
/ 02 декабря 2011

Вы должны использовать stop IS NULL, а не stop = NULL.

4 голосов
/ 02 декабря 2011

Это разрешено, но:

  • stop = NULL не имеет смысла; Вы имеете в виду stop IS NULL.
  • нет необходимости указывать OR stop IS NULL в любом случае, поскольку проверочные ограничения только запрещают чему-либо быть «ложным», а stop > start будет «нулевым» (ни «истинным», ни «ложным»), если stop является нулевым .

Подробнее о проверочных ограничениях см. http://www.postgresql.org/docs/8.4/interactive/ddl-constraints.html.

Следует отметить, что проверочное ограничение удовлетворяется, если проверочное выражение имеет значение true или нулевое значение.

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