[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.모두 문제를 방지하는 대신 문자 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를 교체하려는 경우에는 불가능합니다. 당신은 이전을 삭제하고 새로운 뷰를 생성해야합니다. 이 기본 테이블의 데이터를 삭제하지 않습니다. 다시 할 필요가있는,하지만 너무, 뷰의 추가 속성을 삭제합니다.
from https://stackoverflow.com/questions/8524873/change-postgresql-columns-used-in-views by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 이유는 무엇입니까이 SQL 코드를주고 오류 1066 (안 독특한 테이블 / 별칭 : '사용자')? (0) | 2020.04.05 |
---|---|
[SQL] 테이블 필드는 하이픈을 포함 할 수 있습니까? (0) | 2020.04.05 |
[SQL] SQL 쿼리에 대한 피벗 CASE WHEN를 사용하여 열을 (0) | 2020.04.05 |
[SQL] 안전하게 이름 바꾸기 테이블 일련 기본 키 열을 사용하여 (0) | 2020.04.05 |
[SQL] 쿼리를 제외하고 사용하는 경우 오류 (0) | 2020.04.05 |