Oracle SQL의 테이블에 대한 모든 제약 조건의 표시 이름


115

Oracle SQL에서 만든 여러 테이블에 대한 각 제약 조건의 이름을 정의했습니다.

문제는 특정 테이블의 열에 대한 제약 조건을 삭제하려면 내가 잊어 버린 각 제약 조건에 대해 제공 한 이름을 알아야한다는 것입니다.

테이블의 각 열에 대해 지정한 제약 조건의 모든 이름을 어떻게 나열합니까?

그렇게하기위한 SQL 문이 있습니까?

답변:


160

테이블 열 및 해당 제약 조건을 보려면 데이터 사전 , 특히 USER_CONS_COLUMNS뷰 를 쿼리해야합니다 .

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

참고로, 소문자 이름 (큰 따옴표 사용)으로 테이블을 특별히 생성하지 않은 경우 테이블 이름은 기본적으로 대문자로 설정되므로 쿼리에서 그렇게하는지 확인하십시오.

그런 다음 제약 조건 자체에 대한 자세한 정보를 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>'

오타 :USER_CONS_COLUMNS
Paul Draper

3
<your table name>은 대소 문자를 구분합니다. 대문자 여야합니다.
Kanagavelu Sugumar

owner모두에서 필드 (사용자 | 모든 | DBA) _constraints 및 (사용자 | 모든 | DBA) _cons_columns는 제약 조건의 소유자,하지 (Oracle 설명서 당) 테이블의 소유자입니다. 테이블 소유자는 이러한보기에서 사용 가능한 필드가 아닙니다. 이것은 제약 소유자와 테이블 소유자가 동일해야한다는 것을 의미합니까?
데이비드 플레처


11

아마도 이것이 도움이 될 수 있습니다.

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

건배


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

참고 : 테이블 이름은 대문자 여야합니다.

테이블 이름을 모를 경우에는

select constraint_name,constraint_type,table_name 
from user_constraints;

4

종종 엔터프라이즈 데이터베이스에는 여러 사용자가 있으며 올바른 사용자가 아닙니다.

SELECT * FROM ALL_CONSTRAINTS WHERE table_name = 'YOUR TABLE NAME' ;

에서 선택 Oracle 설명서


0

아래 두 명령 중 하나를 사용하십시오. 모든 것은 대문자 여야합니다. 테이블 이름은 따옴표로 묶어야합니다.

--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';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.