Общая ошибка: 1 OCIStmtExecute: ORA-00001: нарушено уникальное ограничение (HR.SYS_C004023)?

Я могу определить сообщение об ошибке, связанное с ограничением уникального значения, моей таблицей являются «ветки», и откуда появился SYS_C004023. Я проверил таблицу ветвей и не обнаружил дублирования значений. В чем может быть проблема.


person unni    schedule 07.10.2010    source источник


Ответы (1)


откуда взялся SYS_C004023

Это сгенерированное системой имя ограничения, которое Oracle создает, когда ограничение создается без явного имени, например.

create table mytable (col1 integer primary key);

Ограничение первичного ключа для mytable будет сгенерировано системой, так как я не назвал его явно следующим образом:

create table mytable (col1 integer constraint mytable_pk primary key);

Вы можете узнать, для какой таблицы это ограничение, следующим образом:

select table_name
from all_constraints
where owner = 'HR'
and constraint_name = 'SYS_C004023';

И вы можете узнать, какие столбцы он делает уникальными, например:

select column_name
from all_cons_columns
where owner = 'HR'
and constraint_name = 'SYS_C004023';

нет дублирования значений

Нет, не будет, благодаря ограничению. Произошла неудачная попытка вставить или обновить строку, так что ограничение уникальности было нарушеноdd.

person Tony Andrews    schedule 07.10.2010
comment
Большое спасибо за ответ, как будто я скопировал около 10-20 записей из таблицы mysql в оракул... и первичные идентификаторы от 1 до 20. Но я также добавил последовательность, начиная с 1, поэтому я думаю, что это сделало проблему, когда я обрезал все и вставил снова, и это сработало ... фу ... - person unni; 08.10.2010