CHECK制約で現在の行を超えて検索することはサポートされていません。
http://www.postgresql.org/docs/9.1/interactive/sql-createtable.htmlによると:
列制約として指定されたチェック制約は、その列の値のみを参照する必要がありますが、テーブル制約に表示される式は複数の列を参照できます。
現在、CHECK式にサブクエリを含めることも、現在の行の列以外の変数を参照することもできません。
この制限には十分な理由がありますが、交通量の多い一輪車に乗っているときに燃えるような松明をジャグリングしたい場合は、関数を使用して制限を解除できます。これがならない状況 あなたがまれに噛むために戻ってきます。代わりに、トリガーコードの不変条件を適用する方がはるかに安全です。
http://www.postgresql.org/docs/9.1/interactive/triggers.html