如何限制 PostgreSQL 中数组的长度?

mar*_*are 2 database arrays postgresql database-design relational-database

有什么方法可以在作为数组的列上添加约束以限制其长度?我希望这些数组不超过 6 个。是的,我知道新表通常比存储在数组中更好,但我处于数组更有意义的情况。

Pat*_*ick 7

您可以CHECK向表定义添加约束:

CREATE TABLE my_table (
    id  serial PRIMARY KEY,
    arr int[] CHECK (array_length(arr, 1) < 7),
    ...
);
Run Code Online (Sandbox Code Playgroud)

如果表已经存在,您可以添加约束ALTER TABLE

ALTER TABLE my_table ADD CONSTRAINT arr_len CHECK (array_length(arr, 1) < 7);
Run Code Online (Sandbox Code Playgroud)

  • 从 9.4 开始,您还可以使用 `cardinality(arr)` 代替 (2认同)