Oracle SQL에서 만든 여러 테이블에 대한 각 제약 조건의 이름을 정의했습니다.
문제는 특정 테이블의 열에 대한 제약 조건을 삭제하려면 내가 잊어 버린 각 제약 조건에 대해 제공 한 이름을 알아야한다는 것입니다.
테이블의 각 열에 대해 지정한 제약 조건의 모든 이름을 어떻게 나열합니까?
그렇게하기위한 SQL 문이 있습니까?
답변
테이블 열 및 해당 제약 조건을 보려면 데이터 사전 , 특히 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>'
답변
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;
답변
종종 엔터프라이즈 데이터베이스에는 여러 사용자가 있으며 올바른 사용자가 아닙니다.
SELECT * FROM ALL_CONSTRAINTS WHERE table_name = 'YOUR TABLE NAME' ;
에서 선택 Oracle 설명서
답변
아래 두 명령 중 하나를 사용하십시오. 모든 것은 대문자 여야합니다. 테이블 이름은 따옴표로 묶어야합니다.
--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';
답변
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)