У меня есть ограничение, называемое users.SYS_C00381400
. Как узнать, что это за ограничение? Есть ли способ запросить все ограничения?Oracle найти ограничение
ответ
select * from all_constraints
where owner = '<NAME>'
and constraint_name = 'SYS_C00381400'
/
Как и все словаря данных, это USER_CONSTRAINTS посмотреть, если вы просто хотите, чтобы проверить текущую схему и вид DBA_CONSTRAINTS для пользователей администрирования.
Конструкция имени ограничения указывает системное сгенерированное имя ограничения. Например, если мы укажем NOT NULL в объявлении таблицы. Или действительно основной или уникальный ключ. Например:
SQL> create table t23 (id number not null primary key)
2/
Table created.
SQL> select constraint_name, constraint_type
2 from user_constraints
3 where table_name = 'T23'
4/
CONSTRAINT_NAME C
------------------------------ -
SYS_C00935190 C
SYS_C00935191 P
SQL>
'C'
для проверки, 'P'
для первичного.
Вообще, это хорошая идея, чтобы дать реляционным ограничениям явное имя. Например, если база данных создает индекс для первичного ключа (который он будет делать, если этот столбец еще не проиндексирован), он будет использовать имя ограничения o имя индекса. Вы не хотите, чтобы база данных была заполнена такими индексами, как SYS_C00935191
.
Большинство людей не удосуживаются назвать NULL ограничениями.
Чтобы получить более подробное описание (что ссылки таблицы/столбцов которой таблица/столбец), можно выполнить следующий запрос:
SELECT uc.constraint_name||CHR(10)
|| '('||ucc1.TABLE_NAME||'.'||ucc1.column_name||')' constraint_source
, 'REFERENCES'||CHR(10)
|| '('||ucc2.TABLE_NAME||'.'||ucc2.column_name||')' references_column
FROM user_constraints uc ,
user_cons_columns ucc1 ,
user_cons_columns ucc2
WHERE uc.constraint_name = ucc1.constraint_name
AND uc.r_constraint_name = ucc2.constraint_name
AND ucc1.POSITION = ucc2.POSITION -- Correction for multiple column primary keys.
AND uc.constraint_type = 'R'
AND uc.constraint_name = 'SYS_C00381400'
ORDER BY ucc1.TABLE_NAME ,
uc.constraint_name;
От here.
может быть, это может помочь ..
SELECT constraint_name, constraint_type, column_name
from user_constraints natural join user_cons_columns
where table_name = "my_table_name";
- 1. Oracle ограничение базы данных
- 2. Ограничение столбца Oracle VPD
- 3. Ограничение Oracle Regular Expression
- 4. Oracle 11g: Ограничение ограничения
- 5. Устранить уникальное ограничение Oracle
- 6. Ограничение Oracle Employee
- 7. Ограничение проверки Oracle SQL
- 8. Проверить ограничение в Oracle
- 9. Отсутствующее ограничение базы данных Oracle
- 10. Ограничение введенных значений в Oracle
- 11. Сделать ограничение Deferrable в Oracle
- 12. Oracle: Ограничение просмотра «Другие пользователи»
- 13. Oracle: ограничение хранимых процедур Java
- 14. Изменить уникальное ограничение в Oracle
- 15. Ограничение проверки ограничить null Oracle
- 16. Что проверяет это Oracle ограничение
- 17. Oracle вручную добавляет ограничение FK
- 18. Ограничение времени выполнения Oracle/ASPX
- 19. Ограничение проверки Oracle, функция вызова
- 20. Ограничение на атрибут подтипа (Oracle)
- 21. Oracle ошибка при откладывая ограничение
- 22. Найти ограничение общего объекта
- 23. Как найти сбойное ограничение?
- 24. Найти уникальное ограничение таблицы базы данных
- 25. Oracle 10g -> Создать сложное ограничение
- 26. Как найти ограничение по имени
- 27. Oracle уникальное ограничение с предложением where
- 28. Oracle: ограничение, которое зависит от другой таблицы
- 29. Ограничение временного пространства запроса в Oracle
- 30. Как переименовать ограничение по умолчанию для Oracle?
как знать ограничение? users.SYS_C00381400 – Vinay
Имя ограничения появилось в сообщении об ошибке. –