将分数约束添加到oracle中的列

bla*_*kem 3 sql oracle constraints

我正在使用oracle 10gr2.我试图对名为"得分"的列强制执行约束,以便只能输入分数.

更具体地,格式应包含在分子中一个数字,并在分母一个数位,使得用户只能输入一个分数例如3/4,2/5,或7/8.该列仅接受数字作为输入.谁能告诉我使用的SQL?

Bri*_*y37 8

如果我理解正确,我认为正确的方法是将数据存储在两列中.如果最高号码是用户在问题上的实际得分而且最低号码是可能得分,这尤其有意义,这听起来就像你正在做的那样.这将使您能够使用Oracle中的内置数字函数来总结分数,而不是解析字符串.然后,使用类型将每列的大小限制为(0-9)NUMBER(1,0).例如:

alter table table_name add (
    column possible number(1,0),
    column actual number(1,0)
);
Run Code Online (Sandbox Code Playgroud)

如果您已在分数列中包含数据,则可以将值从那里复制到新列.最后,删除该列.

alter table table_name drop score;
Run Code Online (Sandbox Code Playgroud)

此外,我会搜索"Oracle小于约束",因为您可能不希望实际分数超过可能的分数,并且可能会执行类似的约束以使可能分数大于零.