Postgres中的表范围约束

时间:2016-02-25 17:41:26

标签: postgresql database-design constraints

我在Postgres比较新。有没有办法我可以为一个表写一个约束来检查所有字符字段和测试,以确保没有前导字符或尾随字符如果该字段中有任何值?

这样,在编写约束时,我不必逐项列出每个字符字段。

谢谢!

1 个答案:

答案 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,
  ...
);

有效地将约束检查中继到域的级别。