array_position()
が追加され、9.5ページ以降よりシンプルになりました
CREATE TABLE example (
foo TEXT[] NOT NULL check (array_position(foo, null) is null)
);
空の配列を確認することもできます:
CREATE TABLE example (
foo TEXT[] NOT NULL check (foo <> '{}' and array_position(foo, null) is null)
);