Простая проблема с Oracle (sqlplus) ... нужно изменить и добавить переменную> 0 - PullRequest
0 голосов
/ 07 февраля 2012

Я пытаюсь добавить это в свою базу данных Oracle (в SQL * Plus), но как мне установить ограничение? Я попробовал проверить, но это не сработало. Вот что я получил, хотя:

- добавить новый атрибут многолетнего опыта в таблицу Tech_personnel и применить это будет положительное значение (т. е.> 0).

мое решение:

ALTER TABLE Tech_personnel ADD years_of_experience NUMBER(30);

ALTER TABLE Tech_personnel ADD CONSTRAINT non_neg
CHECK(years_of_experience > 0);

1 Ответ

3 голосов
/ 07 февраля 2012

Что именно не работает?

SQL> create table tech_personnel( col1 number );

Table created.

SQL> ALTER TABLE Tech_personnel ADD years_of_experience NUMBER(30);

Table altered.

SQL> ALTER TABLE Tech_personnel ADD CONSTRAINT non_neg CHECK(years_of_experience > 0);

Table altered.

SQL> insert into tech_personnel values( 1, -1 );
insert into tech_personnel values( 1, -1 )
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.NON_NEG) violated


SQL> insert into tech_personnel values( 1, null );

1 row created.

SQL> insert into tech_personnel values( 1, 1 );

1 row created.

Возможно, вы также хотите убедиться, что YEARS_OF_EXPERIENCE не равен NULL?

...