我想禁止在某些text / varchar字段中使用空格。
更重要的是,最好只允许一组允许在那里使用的字符,例如:
[a-zA-Z0-9_\-]
我想将其作为规则应用于所有VARCHAR
字段,这些字段是其表中primary key
的成员。
这应该在数据库级别完成,并且在尝试插入错误记录时会抛出异常,或者在将键字段更改为无效值时更新一个异常记录。
这可以在数据库级别内完成吗?我应该使用Pl/Perl
,还是有更简单的方法?
答案 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约束和正则表达式搜索? 但是您必须修改模式(表)并为每个字段插入它。