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


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

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

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

есть ли инструкция SQL для этого?

5 88

5 ответов:

вам нужно запросить словарь данных, в частности 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>'
SELECT * FROM USER_CONSTRAINTS

может быть, это может помочь:

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

ура

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

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

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

select constraint_name,constraint_type,table_name 
from user_constraints;

используйте любую из двух команд ниже. Все должно быть в верхнем регистре. Имя таблицы должно быть заключено в кавычки:

--SEE THE CONSTRAINTS ON A TABLE
SELECT COLUMN_NAME, CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'TBL_CUSTOMER';

--OR FOR LESS DETAIL
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TBL_CUSTOMER';