在ORACLE中创建表时如何限制INTEGER的长度?

时间:2012-01-12 15:43:36

标签: sql oracle

所有

在Oracle sql * plus中创建表时,我想限制INTEGER列的长度只能为8

例如:RegNumber是INTEGER,它必须是8位数字。

创建表格时如何执行此操作?

2 个答案:

答案 0 :(得分:9)

INTEGER数据类型只是NUMBER的子类型。您可以将列定义为NUMBER(8,0),以获得一个< = 8位数的整数列。

如果您要确保列是8位数且只有8位数,则需要在列上添加检查约束:

CREATE TABLE RegTable
(RegNumber NUMBER(8,0),
CONSTRAINT CheckRegNumber  CHECK (RegNumber > 9999999)
);

答案 1 :(得分:2)

只需指定长度为8,精度为0.就像这样

SQL> create table t8 (col1 number(8,0))
  2  /

Table created.

SQL> insert into t8 values (12345678)
  2  /

1 row created.

SQL> insert into t8 values (123456789)
  2  /
insert into t8 values (123456789)
                       *
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column


SQL> 

要强制执行一个确切的长度(所有数字必须是八位数),您需要使用CHECK约束:

SQL> alter table t8 
  2  add constraint t8_ck check (length(col1) = 8)
  3  /

Table altered.

SQL> insert into t8 values (1234567)
  2  /
insert into t8 values (1234567)
*
ERROR at line 1:
ORA-02290: check constraint (APC.T8_CK) violated


SQL>