如果我有专栏 - 例如,请将其命名为lettergrade
。
除了指定它是CHAR(1)
之外,还有什么方法可以在创建时将其约束为A,B,C,D或E?
答案 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,但可能不太灵活。