Как ограничить длину INTEGER при создании таблицы в ORACLE? - PullRequest
7 голосов
/ 12 января 2012

все

При создании таблицы в Oracle sql * plus я хочу ограничить, чтобы длина столбца INTEGER могла быть только 8 .

Например: RegNumber - это INTEGER, и это должно быть 8-значное число.

Как я могу сделать это при создании таблицы?

Ответы [ 2 ]

9 голосов
/ 12 января 2012

Тип данных INTEGER - это просто подтип NUMBER. Вы можете определить столбец как NUMBER (8,0), чтобы получить целочисленный столбец, который составляет <= 8 цифр. </p>

Если вы хотите убедиться, что столбец состоит из 8 цифр и ТОЛЬКО 8 цифр, вам необходимо добавить проверочное ограничение для столбца:

CREATE TABLE RegTable
(RegNumber NUMBER(8,0),
CONSTRAINT CheckRegNumber  CHECK (RegNumber > 9999999)
);
2 голосов
/ 12 января 2012

Просто укажите длину 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...