我想向 2 个表(在多个列上)添加一些相同的约束。
为此,我想创建用于检查约束的函数。
如果值包含以下任何内容(字符串将始终包含至少一些字母),则验证应该失败:
..(两个相应的点)><- 超过 3 个连续的大写字母
- 所有字母均为大写字母(必须至少包含 1 个小写字母)
到目前为止,我有以下内容:
CREATE FUNCTION no_forbidden_characters(text) RETURNS boolean
LANGUAGE sql IMMUTABLE STRICT
AS $_$
SELECT $1 !~ '[a-z]+|..|>|<';
$_$;
不确定如何连续获得最多 3 个大写字母(尽管允许多个由空格分隔的 3 个大写字母组合)