ОШИБКА ORA 00001 ДЛЯ ПРИЗРАЧНОЙ КОЛОННЫ SYS_NC00008 $ В РАЗРАБОТЧИКЕ ORACLE SQL - PullRequest
0 голосов
/ 08 ноября 2019

Я получаю уникальную ошибку ограничения в Oracle SQL Developer, когда пытаюсь вставить запись в таблицу. В то время как столбец, в котором указывается уникальная ошибка ограничения, является столбцом-призраком - SYS_NC00008 $

(я намеренно вычеркнул некоторые значения при публикации запроса ниже - игнорируйте это)

Запрос:

INSERT INTO "---"."---" (ID, MESSAGE_TYPE, IS_DELETED, CREATED_BY, CREATED_ON, UPDATED_BY, 
UPDATED_ON) 
VALUES ('2', '----', 'N', 'system', 
TO_TIMESTAMP('2018-08-16 07:51:25.000000000', 'YYYY-MM-DD HH24:MI:SS.FF'), 
'system', TO_TIMESTAMP('2019-09-25 05:07:06.000000000', 'YYYY-MM-DD HH24:MI:SS.FF'))

Ошибка:

ORA-00001 : уникальное ограничение (----. ---- _ IX0) нарушено ORA-06512 : в строке 1

1 Ответ

0 голосов
/ 10 ноября 2019

SYS_NC00008 $ и подобные столбцы связаны с созданием индексов на основе функций.

SQL> create table t ( x int );

Table created.

SQL>
SQL> create index IX on t ( x + 10 );

Index created.

SQL>
SQL> select column_name
  2  from   user_tab_cols
  3  where  table_Name = 'T';

COLUMN_NAME
------------------------------
X
SYS_NC00002$

Выполните запрос к USER_IND_EXPRESSIONS, чтобы просмотреть содержимое индекса, и он сообщит вам, где находится уникальное нарушение. Исходя из.

SQL> select COLUMN_EXPRESSION
  2  from    user_ind_expressions
  3  where  index_name = 'IX';

COLUMN_EXPRESSION
--------------------------------------
"X"+10
...