在下面的简单表格中
CREATE TABLE foo (
things VARCHAR ARRAY
);
可以插入 null
作为 things
:
INSERT INTO foo VALUES ('{"hi", null, "ho"}');
但我不允许这样。
但是,将定义改为:,
CREATE TABLE foo (
things VARCHAR ARRAY NOT NULL
);
只会防止这种情况
INSERT INTO foo VALUES (null);
这不是我想要的(我还是想允许的。)
那么,如何才能不声明列,而声明数组列的元素不可为null呢?
2条答案
按热度按时间8aqjt8rx1#
可以使用检查约束:
或者你可以使用
array_position()
```CREATE TABLE foo
(
things text[],
constraint check_things_not_null
check ( array_position(things, null) is null)
);
sd2nnvve2#
你可以用
check
与array_position()
如下所示还可以检查空数组