是否可以在 PostgreSQL 中添加自定义约束

Dol*_*hin -1 postgresql

现在我有一个表存储一些 rss 订阅 url,有时 url 以 '/' 结尾,现在我用 '/' 替换所有没有结尾的 url。确保子网址没有以“/”结尾。我想在 rss 子源表中添加自定义约束。如果子 url 以“/”结尾,则向应用程序抛出错误。我已经阅读了 PostgreSQL 13文档,发现它有很多约束,比如带有 int 数据类型的 uniq 约束检查约束。但是如何添加具有字符串数据类型的约束并确保字符串不以“/”结尾?有没有办法做这个动作?

Len*_*art 6

ALTER TABLE t ADD CONSTRAINT c
    CHECK ( url NOT LIKE '%/');
Run Code Online (Sandbox Code Playgroud)

正如Vérace在评论中所建议的,一种方法是生成一个列:

ALTER TABLE T ADD COLUMN proper_url TEXT 
    GENERATED ALWAYS AS ( regexp_replace(url, '/$', '')) STORED;
Run Code Online (Sandbox Code Playgroud)