为sql列指定特定值选项

时间:2012-03-08 04:55:33

标签: sql oracle

如果我有专栏 - 例如,请将其命名为lettergrade

除了指定它是CHAR(1)之外,还有什么方法可以在创建时将其约束为A,B,C,D或E?

3 个答案:

答案 0 :(得分:5)

alter table your_table_name add (
  constraint grade_constraint
  check (lettergrade in ('A','B','C','D','E')));

答案 1 :(得分:2)

在我看来,在这种情况下,字母等级,我认为检查约束更有意义。在您需要定期更改允许的有效值的情况下,外键更有意义。在字母等级的情况下,A,B,C,D或E的可能性不太可能改变。此外,由于在这种情况下检查约束更有意义,因此考虑它的开销也比外键约束少,后者将带来额外的锁定开销。

希望有所帮助。

答案 2 :(得分:0)

有几种方法可以解决这个问题。最好的可能是使用外键约束,因为这样可以轻松更改可接受的值。检查约束也可能取决于您的RDBMS,但可能不太灵活。