所有
在Oracle sql * plus中创建表时,我想限制INTEGER列的长度只能为8 。
例如:RegNumber是INTEGER,它必须是8位数字。
创建表格时如何执行此操作?
答案 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>