Postgresql - 如何禁止在某些字符串字段中使用空格

时间:2010-01-05 09:03:52

标签: database postgresql plperl

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

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

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

我想将其作为规则应用于所有VARCHAR字段,这些字段是其表中primary key的成员。

这应该在数据库级别完成,并且在尝试插入错误记录时会抛出异常,或者在将键字段更改为无效值时更新一个异常记录。

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

3 个答案:

答案 0 :(得分:5)

您甚至不需要存储过程:

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

应该有用。

答案 1 :(得分:4)

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

答案 2 :(得分:0)

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