ORA-25128: нет вставки / обновления / удаления таблицы с ограничением (... CK_AM_DATA), которое отключено и проверено - PullRequest
0 голосов
/ 04 января 2019

Я искал в SO и заметил, что эта ошибка не закрыта.

В базе данных есть старая таблица (не созданная мной), когда я пытаюсь внести изменения в DML.выдает эту ошибку.

это мой нижеприведенный сценарий.

drop table AM_DATA
/
create table AM_DATA
(id number(4) null,
 name varchar2 (200) null)
/
alter table AM_DATA
 add constraint  CK_AM_DATA
 check (1=1)
 disable validate
/
insert into AM_DATA(id,name) values(1,'A')
/
insert into AM_DATA(id,name) values(2,'B')
/
insert into AM_DATA(id,name) values(3,'B')
/
delete AM_DATA where id =3
/
commit
/
select count(1) cnt from AM_DATA
/



SQL> 

Table dropped

Table created

Table altered

insert into AM_DATA(id,name) values(1,'A')

ORA-25128: No insert/update/delete on table with constraint (....CK_AM_DATA) disabled and validated

insert into AM_DATA(id,name) values(2,'B')

ORA-25128: No insert/update/delete on table with constraint (....CK_AM_DATA) disabled and validated

insert into AM_DATA(id,name) values(3,'B')

ORA-25128: No insert/update/delete on table with constraint (....CK_AM_DATA) disabled and validated

delete AM_DATA where id =3

ORA-25128: No insert/update/delete on table with constraint (.....CK_AM_DATA) disabled and validated

Commit complete

       CNT
----------
         0

1 Ответ

0 голосов
/ 04 января 2019

Что ж, ошибка очевидна, проверочное ограничение кажется отключенным и проверенным.

По умолчанию, когда ограничение отключено, оно novalidated, однако вы можете указать его как validated, однако вы должны понимать,почему это подтверждается?обычно, когда вы хотите предотвратить выполнение DML-таблиц, вы можете добавить проверочное ограничение, отключенное с помощью validated.Таким образом, кажется, что это ограничение было создано только для специального чтения, особенно условие проверки (1 = 1) всегда истинно, поэтому оно ничего не сделает.

Чтобы устранить эту ошибку: Вы можете запустить следующую команду, проверяяограничение по-прежнему отключено, но вы можете внести в него изменения в dml.

alter table
   AM_DATA
DISABLE novalidate constraint
    CK_AM_DATA;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...