Вы ошиблись.
Если вы объявили столбец NR_ANOLETIVO
как NUMBER(4)
, похоже, вы ожидаете год только в этом столбце (например, 1957, 1998, 2010).и т. д.), а не всю дату (например, 16.09.2018 (дд.мм.гггг)).
Следовательно, установка ограничения для проверки некоторого значения date неверна - выследует проверить, что значение, которое вы поместили в этот столбец, больше 2000. Примерно так (ваш код упрощен):
SQL> create table classe
2 (cd_classe number(8) constraint pk_cla primary key,
3 --
4 nr_anoletivo number(4) constraint ch_nra_2k check (nr_anoletivo > 2000)
5 not null,
6 --
7 cd_grau number(2));
Table created.
SQL> insert into classe (cd_classe, nr_anoletivo, cd_grau) values (1, 1990, 23);
insert into classe (cd_classe, nr_anoletivo, cd_grau) values (1, 1990, 23)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_NRA_2K) violated
SQL> insert into classe (cd_classe, nr_anoletivo, cd_grau) values (2, 2018, 33);
1 row created.
SQL>
Если вы действительно хотели проверить полную дату, то вам следует изменить столбец типа данных (DATE
), а также ограничение:
SQL> create table classe
2 (cd_classe number(8) constraint pk_cla primary key,
3 --
4 nr_anoletivo date constraint ch_nra_2k check (nr_anoletivo > date '2000-01-01')
5 not null,
6 --
7 cd_grau number(2));
Table created.
SQL> insert into classe (cd_classe, nr_anoletivo, cd_grau) values (1, date '1990-12-25', 23);
insert into classe (cd_classe, nr_anoletivo, cd_grau) values (1, date '1990-12-25', 23)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_NRA_2K) violated
SQL> insert into classe (cd_classe, nr_anoletivo, cd_grau) values (2, date '2018-09-16', 33);
1 row created.
SQL>