我想知道如果数字的值不是整数,是否有办法防止数字类型的数据进入表格。
即。如果数据包含分数或小数,我不想存储数据。我正在使用oracle 11g。尽管将比例定义为0,但oracle会将数字的小数部分舍入为最接近的整数。
非常确定我们必须对列进行某种检查约束,但我不太确定它会是什么。
非常感谢任何帮助。谢谢!
答案 0 :(得分:2)
对于较小的分数,也许使用float?
(因为将数字加到数字上仅适用于定义的范围)
drop table whole_numbers;
create table whole_numbers(a float);
alter table whole_numbers add constraint check_whole check (a = trunc(a));
insert into whole_numbers values(1);
1 row inserted.
insert into whole_numbers values(1.00002);
ORA-02290: check constraint (VBSMASTER.CHECK_WHOLE) violated
*Cause: The values being inserted do not satisfy the named check
*Action: do not insert values that violate the constraint.
答案 1 :(得分:1)
您可以使用check
约束:
alter table t add constraint chk_col_int as (col = trunc(col));
但是,将列声明为整数或没有小数位的数字可能更有意义。嗯,这可能不会做你想要的,因为输入的实/浮点数会被转换而不是产生错误。