2017-09-29 4 views
0

물 하수도 및 폭풍 네트워크를 모델링하기 위해 giswater라는 도구를 사용하고 있습니다. 이 도구는 GUI의 몇 가지 간단한 입력을 통해 SRID를 데이터베이스로 만듭니다. 기하 도형 열은 모두 xy이고 나는 그것들을 모두 ZM을 인식하도록 만들고 싶습니다. 기하학을 업데이트하기 위해 alter table 명령을 실행할 때 "보기 또는 규칙에 참여하는 열을 변경할 수 없습니다"라는 메시지가 나타납니다. 어쨌든이 변경을 강제하고 오류를 무시하려면? 열을 참조하지 않도록보기를 변경하고 새로운 지오메트리 열을 추가하여 변경하는 동안보기를 일시적으로 전환 해 보았습니다. 분명히보기에서 열을 삭제하거나 다른 열로 변경할 수 없습니다. 나는 또한 스키마를 SQL에 작성한 다음 선 스트링에 대해 sql 행을 편집하고 linestringzm 및 pointzm을 가리키고 스키마를 업데이트하기 위해 파일을 실행하기 위해 psql을 사용했다. "psql -U postgres -d 유틸리티 -1 -f \ i Z : ...... \ xyz_test.sql"을 사용하여 액세스가 거부되었습니다. 또한 pg_restore를 시도했습니다. 어쨌든 pg_admin4를 사용하여 변경 사항을 강제 적용 하시겠습니까? 또는 다른 제안?보기 또는 규칙에 참여하는 열 변경

+0

''pg_attribute'를 직접 업데이트하여 강제로 변경할 수 있지만 권장하지 않습니다. 단순히 새로운 테이블 구조를 사용하여 뷰를 삭제하고 다시 만들지 않는 이유는 무엇입니까? –

+0

그 예가 "the_geom"호를 얼마나 많이 참조하고 있는지 모르는 많은보기가 있습니다. arc는 파이프를 나타내는 모든 선 스트링 기하학이며, 각 유형의 파이프마다 여러 개의 뷰가 있으며, 여러 개의 뷰가 있습니다. 노드는 전체 3D 모델을 만들기 위해 둘 다 업데이트해야하는 것과 같은 방식입니다. 나는 또 다른 일을 발견했다. gui가 데이터베이스를 만드는 데 사용하는 SQL 스크립트를 찾았습니다. 테이블을 만들고 기하학 열을 zm으로 변경 한 것들을 살펴 보았습니다. pg_attribute를 직접 업데이트하려면 어떻게해야하며 권장하지 않는 이유는 무엇입니까? –

답변

0

사용중인 도구에 익숙하지 않지만 아래 명령을 사용하여 테이블을 참조하는 모든 개체 (보기 및 규칙)를 확인하는 것이 좋습니다.

INNER가 sc.id = so.id ON을 sysobjects을 수 있도록 가입 SC syscomments의 구별 so.name 을 선택 WHERE sc.TEXT LIKE '% tablename에의 %'

다음

이러한 개체를 백업하고 완전히 놓아 테이블을 변경하기 전에

+0

코드가 참조 된 모든 객체를 반환해야한다고 올바르게 이해한다면,이를 백업하고, 삭제하고, 업데이트 한 다음 복원해야합니다. –

+0

아니요, 테이블이 PostgreSQL에 없기 때문에 오류를 반환합니다. 그것들이 pg 테이블이라고 가정하면, 변경하고자하는 테이블을 참조 할 수있는 객체 만 찾습니다. –

+0

작동 명령을받을 수 없습니다. 그게 내 능력인지 명령인지 확실하지 않다. 이 일을 할 수있는 방법이 있어야합니다 ... –