3,499
社区成员
发帖
与我相关
我的任务
分享SQL> create table test(id number check(instr(to_char(id),'.') = 0));
-----------------------------
-------测试如下------------
-----------------------------
SQL> insert into test values(5.1);
insert into test values(5.1)
*
ERROR at line 1:
ORA-02290: check constraint (XIONGWENHUA.SYS_C006977) violated
SQL> select * from test;
ID
----------
5
SQL>
SQL> create table testnum(num1 number(5), num2 number(5,2));
表已创建。
SQL> insert into testnum(num1, num2) values(123.1, 123.12);
已创建 1 行。
SQL> insert into testnum(num1, num2) values(12312, 123.12);
已创建 1 行。
SQL> insert into testnum(num1, num2) values(123121, 123.12);
insert into testnum(num1, num2) values(123121, 123.12)
*
第 1 行出现错误:
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into testnum(num1, num2) values(12312, 123.121);
已创建 1 行。
SQL> insert into testnum(num1, num2) values(12312, 123.1211);
已创建 1 行。
SQL> insert into testnum(num1, num2) values(12312, 1213.1211);
insert into testnum(num1, num2) values(12312, 1213.1211)
*
第 1 行出现错误:
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into testnum(num1, num2) values(12312.1, 1213.1211);
insert into testnum(num1, num2) values(12312.1, 1213.1211)
*
第 1 行出现错误:
ORA-01438: 值大于为此列指定的允许精度
好吧,我也纳闷了。
Oracle在这方面应该有一定的机制。