中声明一个类型为

中声明一个类型为

本文介绍了在 PostgreSQL 中声明一个类型为 'not-null-string' 数组的列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 PostgreSQL 9.6 我可以创建一个类型为not-null-array of string"的列:

Using PostgreSQL 9.6 I can create a column with type 'not-null-array of string' with:

CREATE TABLE example (
    foo TEXT[] NOT NULL
);

但这允许元素为空,即我可以这样做:

but this allows the elements to be null, i.e I can do:

INSERT INTO example VALUES('{NULL}')

有没有办法创建一个类型为not-null-array of not-null-string"的列?我想要这样的东西:

Is there a way to instead create a column with type 'not-null-array of not-null-string'? I'd like something like this:

CREATE TABLE example (
    foo (NOT NULL TEXT)[] NOT NULL
);

但它在语法上无效.有没有一种有效的方式来表达这一点?

but it's not syntactically valid. Is there a valid way to express this?

推荐答案

自 pg 9.5 起更简单,添加了 array_position()

Simpler since pg 9.5, with the addition of array_position()

CREATE TABLE example (
    foo TEXT[] NOT NULL check (array_position(foo, null) is null)
);

您可能还想检查空数组:

You might also want to check for an empty array:

CREATE TABLE example (
    foo TEXT[] NOT NULL check (foo <> '{}' and array_position(foo, null) is null)
);

这篇关于在 PostgreSQL 中声明一个类型为 'not-null-string' 数组的列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 09:01