我正在使用 oracle 10gr2。我正在尝试对名为“score”的列实现约束,以便只能输入分数。
更具体地说,格式应包含一个数字的分子和一个数字的分母,这样用户只能输入一个分数,例如 3/4
,2/5
或 7/8
。该列仅接受数字作为输入。谁能告诉我要使用的 SQL 吗?
最佳答案
如果我理解正确,我认为正确的方法是将数据存储在两列中。如果最高数字是用户在问题上的实际分数,而最低数字是可能的分数,这尤其有意义,这听起来就像你正在做的那样。这将使您能够使用 Oracle 中的内置数字函数而不是解析字符串来总结分数。然后,您使用类型 NUMBER(1,0)
将每列的大小限制为 (0-9)。例如:
alter table table_name add (
column possible number(1,0),
column actual number(1,0)
);
如果分数列中已有数据,则将值从那里复制到新列。最后,删除该列。
alter table table_name drop score;
另外,我会搜索“Oracle 小于约束”,因为您可能不希望实际分数超过可能,并且可能会执行类似的约束以使可能的分数大于零。
关于sql - 在 oracle 的列中添加分数约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7585127/