有没有办法在不使用触发器的情况下定义值的范围?

时间:2013-02-17 19:42:07

标签: database oracle

我被要求为表中的属性添加约束,以便属性的值应该是介于0和1之间的浮点数。据我所知,float(a,b)不在此处任务.....除了在Oracle中为此问题编写触发器之外,还有一种更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

是使用检查约束。

SQL> alter table test modify id check (id between 0 and 1);

Table altered.

SQL> insert into test values (1.0);

1 row created.

SQL> insert into test values (1.01);
insert into test values (1.01)
*
ERROR at line 1:
ORA-02290: check constraint (SYS.SYS_C0013632) violated

如果需要,可以命名检查约束:

SQL> alter table test modify id constraint id_between_0_1 check (id between 0 and 1);

Table altered.

SQL> insert into test values (1.01);
insert into test values (1.01)
*
ERROR at line 1:
ORA-02290: check constraint (SYS.ID_BETWEEN_0_1) violated