4

我想禁止在某些 text/varchar 字段中使用空格。

更重要的是,最好只有一组允许在那里使用的字符,例如:

[a-zA-Z0-9_\-]

我想将其作为其表VARCHAR中成员的所有字段的规则。primary key

这应该在数据库级别完成,并且在尝试插入错误记录或通过将关键字段更改为无效值来更新记录时可能会引发异常。

这可以在数据库级别内完成吗?我应该使用Pl/Perl它,还是有更简单的方法?

4

3 回答 3

7

你甚至不需要存储过程:

alter table xxx add constraint check_valid_chars check ( your_column ~ '^[a-zA-Z0-9_\-]+$' );

应该管用。

于 2010-01-05T09:47:23.123 回答
4

你可以定义一个域,看看底部的http://www.postgresql.org/docs/current/interactive/sql-createdomain.html,有一个关于美国邮政编码的例子。

于 2010-01-05T09:18:47.637 回答
0

看到您的最新评论,您也许可以使用 CHECK 约束和正则表达式搜索?但是您必须修改架构(表)并将其插入每个字段。

于 2010-01-05T09:42:50.580 回答