gpt4 book ai didi

postgresql - 为什么在 PostgreSQL 枚举类型数组中允许空值?

转载 作者:行者123 更新时间:2023-12-04 08:54:05 25 4
gpt4 key购买 nike

我正在使用 PostgreSQL 数据库,并使用枚举类型的数组作为列之一。

CREATE TYPE my_type_enum AS ENUM ('value1', 'value2', 'value3');
ALTER TABLE "my_table" ADD COLUMN IF NOT EXISTS "my_column" my_type_enum ARRAY;

enum 让我可以只添加它包含的有效值,但我也可以向它添加一个 null 元素。

因此,为了防止将 null 元素保存到 DB,我在应用程序中添加了一个过滤器,但我想知道 PostgreSQL 中是否有定义不允许添加 null元素到 array?

附言我看到了here建议将函数添加为列定义的一部分,但这不是我要求的。

最佳答案

您可以添加检查约束以防止元素具有 NULL 值。

alter table my_table
add constraint no_null_element
check (cardinality(my_column) = cardinality(array_remove(my_column, null)));

更简洁的解决方案是规范化的一对多关系,外键列定义为 not null

关于postgresql - 为什么在 PostgreSQL 枚举类型数组中允许空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63932721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com