Ответ 1
Не поддерживается просмотр за пределами текущей строки в ограничении CHECK.
http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html говорит:
Ограничение проверки, указанное как ограничение столбца, должно ссылаться это значение столбца, а выражение, отображаемое в таблице Ограничение может ссылаться на несколько столбцов.
В настоящее время выражения CHECK не могут содержать подзапросы и не ссылаются на переменные, отличные от столбцов текущей строки.
Есть веские причины для этого ограничения, но если вам нравится жонглировать пылающими факелами во время езды на велосипеде по интенсивному трафику, вы можете подорвать ограничение с помощью функций. Ситуации, в которых это не вернется, чтобы укусить вас, редки; вам было бы гораздо безопаснее применять инвариант в коде триггера.
http://www.postgresql.org/docs/9.1/interactive/triggers.html