Я определил имя для каждого из ограничений для нескольких таблиц, которые я создал в Oracle SQL.
Проблема в том, что для удаления ограничения для столбца конкретной таблицы мне нужно знать имя, которое я предоставил для каждого ограничения, которое я забыл.
Как мне указать все имена ограничений, которые я указал для каждого столбца таблицы?
Есть ли какой-либо SQL-оператор для этого?
Вам нужно запросить словарь , в частности представление 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';
note: имя таблицы должно быть в шапке.
Если вы не знаете имя таблицы,
select constraint_name,constraint_type,table_name
from user_constraints;
USER_CONS_COLUMNS
:USER_CONS_COLUMNS