有没有办法在一个数组列上添加一个约束来限制文本对象的长度?我知道我可以在没有约束的情况下做到这一点:
colA varchar(100)[] not null
我试着用下面的方法来做这件事:
alter table "tableA" ADD CONSTRAINT "colA_text_size"
CHECK ((SELECT max(length(pc)) from unnest(colA) as pc) <= 100) NOT VALID;
alter table "tableA" VALIDATE CONSTRAINT colA_text_size;
却得到了错误:不能在检查约束条件中使用子查询(SQLSTATE 0A000)
1条答案
按热度按时间f4t66c6m1#
请尝试使用下列定义做为检查条件约束:(参见demo,对于我限制长度为25的演示)。
用途:
1.首先,函数array_to_string(...)将数组转换为csv。
1.函数的作用是:获取字符串中剩余的字符数。
1.最后,将该数字与极限值(100)进行比较,并且
check
约束要么通过要么失败。参考文件:array_to_string()、replace(), length()