首页 > 解决方案 > 排除某些值的 SQL 约束?

问题描述

是否存在允许您在列中禁止某些值的 sql 约束?

例如

ALTER TABLE foo
    ADD COLUMN code TEXT NOT NULL UNIQUE DISALLOW '<GENERATE>'
;

st<GENERATE>可以在应用程序中安全地使用,以指示应该在持久化之前生成该值,而不会有意外将其推送到数据库的风险?

标签: sqlpostgresqlconstraints

解决方案


您需要一个检查约束:

ALTER TABLE foo
   ADD COLUMN code TEXT NOT NULL UNIQUE;

alter table foo 
   add constraint disallow_generate 
   check (code <> '<GENERATE>');

如果要禁止多个值,请使用 NOT IN 条件:

alter table foo 
   add constraint disallow_generate 
   check (code not in ('<GENERATE>', '<GENERATED>', 'foo');

推荐阅读