Узнайте больше о природе ограничения? - PullRequest
2 голосов
/ 17 декабря 2011

Часть устаревшего кода, который я запускаю и выполняет какой-то оракульный SQL, нарушает ограничение REF_REQUEST.

Я смотрю на это ограничение, выполняя:

select * from all_constraints where constraint_name='REF_REQUEST'

Это говорит мне о том, что тип_крепления равен 'R', и дает мне имя таблицы CORRESPONDENCE.

Однако я до сих пор не знаю ... какое значение мне не хватает в CORRESPONDENCE или где я пытаюсь вставить то, что вызывает проблему, и какой столбец относится к каждому из них. Как я могу узнать эту информацию, запросив дБ?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2011

Кроме того, вы знаете, что это ограничение ссылочной целостности, основанное на вашем выборе из all_constraints (constraint_type = R), так что вы можете просто запросить у all_cons_columns свой ответ:

SELECT table_name, column_name
  FROM all_cons_columns
 WHERE constraint_name = 'REF_REQUEST'
 ORDER by position;
2 голосов
/ 17 декабря 2011

Используйте метод get_ddl в пакете dbms_metadata, чтобы получить более подробную информацию об ограничении

SELECT CAST(DBMS_METADATA.GET_DDL('CONSTRAINT','REF_REQUEST','CERTIFICATION') AS VARCHAR2(4000)) 
FROM DUAL

Это должно сказать вам, на какие столбцы действует ограничение


Один из перегруженных методов принимает имя схемы, поэтому вы можете передать его в качестве параметра.

* * 1010

Дальнейшее чтение:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...