我正在使用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
元素保存到数据库,我在应用程序中添加了一个过滤器,但我想知道PostgreSQL中是否存在不允许将null
元素添加到{{1}中的定义}?
P.S。我看到here建议添加功能作为列定义的一部分,但这不是我要的。
答案 0 :(得分:3)
您可以添加检查约束,以防止元素具有NULL值。
alter table my_table
add constraint no_null_element
check (cardinality(my_column) = cardinality(array_remove(my_column, null)));
更清洁的解决方案是将一对多关系标准化,并将外键列定义为not null
答案 1 :(得分:-1)
另一种方式
IF array_length(arrayname,1)> 0然后 交易 END IF;