나는 다음과 같은 쿼리를 사용하여 구체화 된 뷰를 만드는 오전 :구체화 된보기를 만들 때 열이 nullable이 아님을 나타내는 방법은 무엇입니까?
CREATE MATERIALIZED VIEW article_view AS
SELECT
id,
alternative_headline,
article_author_id,
created_at,
description,
headline,
preview_paragraph_image_id,
published_at,
updated_at
FROM article
WHERE
published_at IS NOT NULL
WITH NO DATA;
CREATE UNIQUE INDEX ON article_view (id);
나는 그것이 published_at
열이 Null을 허용하지 않은 materialized-view으로 표현 될 싶어요.
published_at
열을 Nullable로 표시하려는 이유는 데이터베이스 스키마를 기반으로 데이터베이스 쿼리와 형식을 생성하는 scaffolding tool을 사용하기 때문입니다. 이 특별한 경우에는 published_at
이 엄격한 유형 검사 오류를 유발하는 Nullable 열로 잘못 표시되고 있습니다.
SELECT
pc1.relname AS "tableName",
pa1.attname AS "columnName",
pg_catalog.format_type (pa1.atttypid, NULL) "dataType",
pc1.relkind = 'm' "isMaterializedView",
NOT(pa1.attnotnull) "isNullable"
FROM
pg_class pc1
JOIN pg_namespace pn1 ON pn1.oid = pc1.relnamespace
JOIN
pg_attribute pa1 ON pa1.attrelid = pc1.oid
AND pa1.attnum > 0
AND NOT pa1.attisdropped
WHERE
pn1.nspname = 'public' AND
pc1.relkind IN ('r', 'm')
귀하의 Postgres 버전은 무엇입니까? – klin
PostgreSQL 버전 9.6. – Gajus
어쩌면 더 좋은 생각은 mview 속성이 아닌 원래 테이블의 nullable을 검사 할 것입니다. 스 캐 폴딩 도구를 사용하는 것입니다.이 방법을 사용하면 포스트 그레스 로직과 동기화되어 도구의 제약 조건을 지원할 수 있습니다. –