Отображение имен всех ограничений для таблицы в Oracle SQL

80

Я определил имя для каждого из ограничений для нескольких таблиц, которые я создал в Oracle SQL.

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

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

Есть ли какой-либо SQL-оператор для этого?

Теги:
oracle11g
constraints

4 ответа

100
Лучший ответ

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

SELECT *
  FROM user_cons_columns
 WHERE table_name = '<your table name>';

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

Если вы хотите увидеть больше информации о самом ограничении, запросите представление USER_CONSTRAINTS:

SELECT *
  FROM user_constraints
 WHERE table_name = '<your table name>'
   AND constraint_name = '<your constraint name>';

Если таблица хранится в схеме, которая не является вашей схемой по умолчанию, вам может потребоваться заменить представления следующим образом:

all_cons_columns

и

all_constraints

добавление в предложение where:

   AND owner = '<schema owner of the table>'
  • 0
    USER_CONS_COLUMNS : USER_CONS_COLUMNS
  • 2
    <имя вашей таблицы> чувствительно к регистру, я думаю; Это должно быть в верхнем регистре.
9
SELECT * FROM USER_CONSTRAINTS
  • 2
    Это не даст вам имя столбца
6

возможно, это может помочь:

SELECT constraint_name, constraint_type, column_name
from user_constraints natural join user_cons_columns
where table_name = "my_table_name";

веселит

6
select constraint_name,constraint_type 
from user_constraints
where table_name = 'YOUR TABLE NAME';

note: имя таблицы должно быть в шапке.

Если вы не знаете имя таблицы,

select constraint_name,constraint_type,table_name 
from user_constraints;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню