Table-Postgres 中的宽约束
Table-wide constraint in Postgres
我是 Postgres 的新手。有什么方法可以为 table 编写一个约束,检查所有字符字段并测试以确保没有前导字符或尾随字符(如果字段中有任何值)?
这样我在编写约束时就不必逐条列出每个字符字段。
谢谢!
不,据我所知,你不能写这样的约束。
您可以做的是 create a DOMAIN
具有检查功能,然后将所有 table 列设为该域类型。假设你指的字符是空格:
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,
...
);
有效地将约束检查中继到域级别。
我是 Postgres 的新手。有什么方法可以为 table 编写一个约束,检查所有字符字段并测试以确保没有前导字符或尾随字符(如果字段中有任何值)?
这样我在编写约束时就不必逐条列出每个字符字段。
谢谢!
不,据我所知,你不能写这样的约束。
您可以做的是 create a DOMAIN
具有检查功能,然后将所有 table 列设为该域类型。假设你指的字符是空格:
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,
...
);
有效地将约束检查中继到域级别。