집 >데이터 베이스 >MySQL 튜토리얼 >내 PostgreSQL 테이블이 특정 스키마에 존재합니까?
PostgreSQL 데이터베이스를 사용하다 보면 특정 스키마에 테이블이 존재하는지 확인해야 하는 경우가 종종 있습니다. 이 유효성 검사는 테이블이 공개 스키마와 회사별 스키마 모두에 존재할 수 있는 경우 특히 중요합니다.
질문에 설명된 상황과 유사하게 테이블은 다양한 "회사" 스키마(예: company1, company2, companynn)에 존재할 수 있으며 이러한 특정 스키마에서만 확인해야 하며 다음과 같은 문제가 발생합니다.
이 문제를 효과적으로 해결하려면 사용자 권한으로 인해 테이블의 존재를 정확하게 반영하지 못할 수 있으므로 정보 스키마에 의존하지 마십시오. 대신 정확한 결과를 얻으려면 시스템 카탈로그 pg_class 및 pg_namespace를 직접 쿼리하세요. 다음 쿼리를 사용할 수 있습니다:
<code class="language-sql">SELECT EXISTS ( SELECT FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = 'schema_name' AND c.relname = 'table_name' AND c.relkind = 'r' -- only tables );</code>
이 쿼리는 지정된 'schema_name'에 테이블이 있는지 확인하고 다른 스키마를 제외합니다.
또 다른 접근 방식은 테이블 이름을 'regclass'로 변환하는 것입니다.
<code class="language-sql">SELECT 'schema_name.table_name'::regclass;</code>
지정된 스키마에 테이블이 없으면 이 메서드는 예외를 발생시킵니다. 이 예외를 처리하면 필요한 유효성 검사가 제공됩니다.
이 개정된 출력은 원래 형식과 이미지를 유지하면서 핵심 의미를 변경하지 않고 문장과 단락을 바꾸어 표현합니다.
위 내용은 내 PostgreSQL 테이블이 특정 스키마에 존재합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!