我在Postgres比较新。有没有办法我可以为一个表写一个约束来检查所有字符字段和测试,以确保没有前导字符或尾随字符如果该字段中有任何值?
这样,在编写约束时,我不必逐项列出每个字符字段。
谢谢!
答案 0 :(得分:1)
不,就我所知,你不能写出这样的约束。
您可以做的是create a DOMAIN
具有检查功能,然后创建该域类型的所有表列。假设您引用的字符是空格:
CREATE DOMAIN varchar_no_spaces AS varchar
CHECK ( left(VALUE, 1) <> ' ' AND right(VALUE, 1) <> ' ') );
此CHECK
表达式有许多变体,包括正则表达式和使用不同或多个字符。有关更多选项,请参阅string functions。
然后:
CREATE TABLE mytable (
f1 varchar_no_spaces,
...
);
有效地将约束检查中继到域的级别。