2017-11-13 18 views
3

이 테이블에 정의 된 구체화 된보기가있는 경우 테이블에서 열을 삭제할 수없는 것으로 보입니다. 예를 들어, 우리는이 테이블이 있다고 가정하자 :구체화 된보기가있는 테이블의 열 삭제

> CREATE TABLE healthera.users (
> user_id timeuuid PRIMARY KEY, 
> address text, 
> birthday int, 
> forename text, 
> user_password text, 
> username text 
>); 

을 우리는 아래에 구체화 된 뷰 정의 :

> CREATE MATERIALIZED VIEW users_by_username AS 
> SELECT * FROM users 
> WHERE user_id IS NOT NULL AND username IS NOT NULL 
> PRIMARY KEY (username, user_id); 

그런 다음 우리는 사용자 테이블을 변경하고 우리가 열 추가 :

> ALTER TABLE users ADD last_name text; 

사용자 테이블에서이 열 또는 다른 열을 삭제하려고 시도하면이 오류가 표시됩니다.

,623,210

또는

> ALTER TABLE users DROP forename ; 
> InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot drop column forename, depended on by materialized views (healthera.{users_by_username})" 

이 뭔가 예상되어 있습니까? 어떻게 처리해야합니까? 구체화 된 뷰를 삭제하고 열을 삭제 한 다음 구체화 된 뷰를 다시 작성해야합니까? 그렇다면 카산드라에게 얼마나 비쌉니까?

답변

2

MV의 기본 테이블에 열을 추가 할 수는 있지만 PK의 일부가 아닌 경우에도 열을 삭제할 수는 없습니다.

http://www.doanduyhai.com/blog/?p=1930

데이터 /, 백그라운드에서 뮤직 비디오를 채울 구축 과정을 시작된다 승 기존 테이블에 대한 MV를 생성. 당신은 상태를 확인할 수 있습니다

-이 블로그 게시물에 대한

SELECT * FROM system.views_builds_in_progress; 
SELECT * FROM system.built_views; 
+0

덕분에 매우 도움이 될 것입니다! 따라서 솔루션은 구체화 된 뷰를 삭제하고 소스 테이블에서 컬럼을 삭제 한 후 구체화 된 뷰를 다시 작성하는 것입니다. –

+0

네, 맞습니다. – juniormint88