복붙노트

[SQL] 뷰에서 사용 변경 PostgreSQL의 열

SQL

뷰에서 사용 변경 PostgreSQL의 열

나는 조금 긴장을 PostegreSQL을하고 싶습니다. 내가보기에 사용되는 열을 변경할 때마다, 내가보기를 드롭 필드를 변경 한 다음 뷰를 다시 만들어야 보인다. 나는 여분의 보호를 포기하고 그냥 날 필드를 변경 한 다음 뷰에 조정을 알아낼 수 있도록 PostgreSQL을 말할 수 있습니까?

설명: 나는보기가 무엇인지 이해합니다. 보기가 난 그냥 기본 테이블을 변경하고보기 변경을 선택 할 수하고자하는 하위 쿼리처럼이기 때문에 사실입니다.

하자 내가 다음을 말한다 :

CREATE TABLE monkey
(
  "name" character varying(50) NOT NULL,
)

CREATE OR REPLACE VIEW monkey_names AS 
 SELECT name
   FROM monkey

난 정말 그냥 삭제하고 뷰를 다시 만들 필요없이 마이그레이션 스크립트에서 다음을 수행합니다.

ALTER TABLE monkey ALTER COLUMN "name" character varying(100) NOT NULL

해결법

  1. ==============================

    1.모두 문제를 방지하는 대신 문자 VARYING (n)은 길이 지정자없이 다양한 데이터 형식의 텍스트 또는 VARCHAR / 문자를 사용합니다. 설명서에 이러한 데이터 유형에 대해 읽어보십시오.

    모두 문제를 방지하는 대신 문자 VARYING (n)은 길이 지정자없이 다양한 데이터 형식의 텍스트 또는 VARCHAR / 문자를 사용합니다. 설명서에 이러한 데이터 유형에 대해 읽어보십시오.

    CREATE TABLE monkey(name text NOT NULL)
    

    당신이 정말로 최대 길이를 시행 할 경우 CHECK 제약 조건을 만들 :

    ALTER TABLE monkey 
      ADD CONSTRAINT monkey_name_len CHECK (length(name) < 101);
    

    변경하거나 뷰와 같은 따라 개체를 건드리지 않고 인해 (더 이상 포스트 그레스의 현대 버전에서 항상 필요하지 않습니다) 유형의 변화에 ​​테이블에 새 행을 작성하는 포스트 그레스를 시작하지 않고 그 제약 언제든지 삭제할 수 있습니다.

    @Michael에 의해 제안으로, 좀 더 일반적인 정보를 추가 :

    PostgreSQL의에서 뷰는 단지 "하위 쿼리에 별칭"아니다. 조회수 대신 DO my_view SELECT TO ON 규칙 특별한 테이블로 구현됩니다. 열 기본값을 정의에도 당신은 그것을에게 권한을 부여 할 수 있습니다, 설명을 추가하거나 (이.은 ALTER TABLE 명령과 전망을 변경할 수 있습니다 이유 있다고) (INSERT TO ON 규칙에 유용 대신 DO my_view ...). 여기 또는 여기 설명서에 자세히보기.

    당신이 기본 개체를 변경하는 경우, 당신도, 어떤 따라 뷰의 정의 쿼리를 변경해야합니다. 는 ALTER VIEW 문은 뷰의 보조 속성을 변경할 수 있습니다. 를 사용하여 만들거나 쿼리를 변경 VIEW 교체 - 그것은 어떤 추가 속성을 유지합니다.

    당신이 (손에있는 경우 등) 열을 결과의 데이터 유형을 변경 CREATE OR VIEW를 교체하려는 경우에는 불가능합니다. 당신은 이전을 삭제하고 새로운 뷰를 생성해야합니다. 이 기본 테이블의 데이터를 삭제하지 않습니다. 다시 할 필요가있는,하지만 너무, 뷰의 추가 속성을 삭제합니다.

  2. from https://stackoverflow.com/questions/8524873/change-postgresql-columns-used-in-views by cc-by-sa and MIT license