뷰(Views)
Drizzle ORM을 사용하면 여러 가지 방법으로 뷰를 선언할 수 있습니다.
데이터베이스에 생성해야 하는 뷰를 선언하거나, 이미 데이터베이스에 존재하는 뷰를 선언할 수 있습니다.
뷰 선언은 쿼리 빌더
문법을 인라인으로 사용하거나, 독립형 쿼리 빌더
를 사용하거나, SQL
연산자를 직접 사용하여 할 수 있습니다.
인라인 또는 독립형 쿼리 빌더로 뷰를 생성할 경우, 뷰 컬럼 스키마가 자동으로 추론됩니다.
하지만 SQL
을 사용할 때는 뷰 컬럼 스키마를 명시적으로 선언해야 합니다.
뷰 선언하기
특정 컬럼만 선택하려면 쿼리 빌더의 .select({ ... })
메서드를 사용할 수 있습니다. 예를 들면 다음과 같습니다:
또한, standalone query builder
를 사용하여 뷰를 선언할 수도 있습니다. 이 방법은 동일하게 작동합니다:
Raw SQL로 뷰 선언하기
쿼리 빌더에서 지원하지 않는 문법으로 뷰를 선언해야 할 때, sql
연산자를 직접 사용하고 뷰 컬럼 스키마를 명시적으로 지정할 수 있습니다.
기존 뷰 선언하기
데이터베이스에서 기존 뷰에 대한 읽기 전용 접근 권한이 주어진 경우, .existing()
뷰 설정을 사용해야 합니다. 이렇게 하면 drizzle-kit
이 생성된 마이그레이션에서 create view
구문을 무시하고 생성하지 않습니다.
구체화된 뷰(Materialized Views)
공식 문서에 따르면, PostgreSQL은 **일반 뷰
**와 **구체화된 뷰
**를 모두 지원합니다.
PostgreSQL의 구체화된 뷰는 일반 뷰와 마찬가지로 규칙 시스템을 사용하지만, 결과를 테이블 형태로 저장합니다.
Drizzle ORM은 PostgreSQL의 구체화된 뷰를 기본적으로 지원합니다:
애플리케이션 실행 중에 구체화된 뷰를 새로 고칠 수 있습니다:
확장 예제
쿼리 내부의 모든 매개변수는 $1
, $2
등으로 대체되지 않고 그대로 인라인 처리됩니다.