Para começar, a dimensionalidade de um array não é refletida no tipo de dados no Postgres. A sintaxe
integer[][]
é tolerado, mas na verdade é apenas integer[]
internamente.Leia o manual aqui.
Isso significa que as dimensões podem variar dentro do mesmo tipo de dados (a mesma coluna da tabela).
Para obter as dimensões reais de uma matriz específica valor :
SELECT array_dims(my_arr); -- [1:2][1:3]
Ou apenas para obter o número de dimensões:
SELECT array_ndims(my_arr); -- 2
Existem mais funções de matriz para necessidades semelhantes. Consulte a tabela de funções de matriz no manual.
Relacionado:
Se você precisar impor dimensões específicas em uma coluna, adicione um
CHECK
restrição
. Para aplicar matrizes bidimensionais:ALTER TABLE tbl ADD CONSTRAINT tbl_arr_col_must_have_2_dims
CHECK (array_ndims(arr_col) = 2);