Oracle 및 PostgreSQL에서 테이블 수준 검사 제약 조건을 얻는 특정 방법이 있는지 알고 싶습니다.Oracle 및 PostgreSQL에서 테이블 수준 검사 제약 조건을 얻는 방법
테이블의 모든 CHECK 제약 조건을 얻을 수 있지만이 특정 검사 제약 조건 만 얻으려고합니다. 특정 쿼리가 있는지 모르겠습니다.
감사합니다.
Oracle 및 PostgreSQL에서 테이블 수준 검사 제약 조건을 얻는 특정 방법이 있는지 알고 싶습니다.Oracle 및 PostgreSQL에서 테이블 수준 검사 제약 조건을 얻는 방법
테이블의 모든 CHECK 제약 조건을 얻을 수 있지만이 특정 검사 제약 조건 만 얻으려고합니다. 특정 쿼리가 있는지 모르겠습니다.
감사합니다.
PostgreSQL에는 시스템 카탈로그 pg_constraint이 있습니다.
카탈로그 pg_constraint는 확인, 기본 키, 고유, 외부 키 및 제외 조건을 테이블에 저장합니다. (열 제한은 특별히 처리 된 이 아니며 모든 열 제약 조건은 일부 테이블 제약 조건과 동일합니다.) null이 아닌 제약 조건은 pg_attribute 카탈로그에 표시되며 여기에는 표시되지 않습니다.
사용자 정의 제한 조건 트리거 (CREATE CONSTRAINT TRIGGER로 작성)도이 테이블에 항목을 생성합니다.
도메인의 제약 조건도 여기에 저장됩니다.
SELECT
*
FROM
pg_constraint
WHERE
contype = 'c' AND -- check constraint
conrelid != 0 AND -- table constraint
conname = 'my_check';
contype
열은 제약 타입을 포함 c
체크 제약위한 것이다. conrelid
열에는이 제약 조건이 적용되는 테이블의 oid
, 테이블 제약 조건이 아닌 경우 0
이 포함됩니다. 오라클 기본보기를 들어
이 특정 테이블의 특정 제약 얻기 위해, ALL_CONSTRAINTS
쿼리입니다 : 귀하의 답변에 대한
SELECT *
FROM all_constraints
WHERE constraint_name LIKE upper('%&your_costraint%')
AND table_name LIKE upper('%&your_table%');
고맙습니다. 제약 조건 이름을 알지 못하고 check 제약 조건 tab_level에 대한 특정 쿼리를 찾고 있습니다. 당신의 방식대로 나는 테이블의 모든 제약 조건을 얻습니다. – WhiteShadow
CHECK 제약 조건 만 찾으려면 column ** constraint_type **을 사용하십시오. SELECT * FROM all_constraints WHERE table_name LIKE upper ('% & your_table %') AND constraint_type = 'C';' –
감사합니다 순전히, 나는 단지 제약 탭 -을 확인하기위한 특정 쿼리를 찾고 있어요 레벨, 그것이 존재하는지 나는 모른다. 이 쿼리를 사용하면 모든 제약 조건을 얻을 수 있으며 탭 수준 검사 제약 조건도 없습니다. – WhiteShadow
그래, 테이블 점검 제약 조건 만 선택하도록 내 대답을 업데이트했습니다. "특정 검사 제약 조건"이 의미하는 바를 설명하십시오. 누락 된 수표를 찾으시겠습니까? – Adam
내가 잘 설명하는지 잘 모르겠다. 나는 단지 conname의 이름을 모른다는 테이블 수준의 체크 제약만을 원한다. 예 : BONUS 및 TAX라는 두 개의 변수가있는 테이블 EMP가 있으며 BONUS> TAX 인 테이블 수준 검사 제약 조건이 있습니다. 나는 단지이 제약 조건을 원하지만 pg_constraint에서 쿼리가 테이블 수준의 CHECK 제약 조건인지 또는 열 수준의 CHECK 제약 조건인지를 확인할 수 없다. 내가 그걸 아주 잘 설명했는지 모르겠다. 미안해! – WhiteShadow