SpatiaLite의 공간 계층 (테이블)에는 트리거, 인덱스 및 geometry_columns
테이블의 항목 (최소한)을 포함하여 다양한 지원 개체 및 메타 데이터가 포함됩니다 . 공간 레이어를 손상시키지 않도록 필요한 모든 변경 사항을 한 번에 처리하는 GUI 또는 (필요한) 모든 필수 변경 사항에 대한 문서를 찾고 있습니다.
테이블에는 다음이 있습니다.
- 의 항목
geometry_columns.f_table_name
. - 이름이 5 인 트리거
[prefix]_[table_name]_geometry
. 여기서 접두사는 트랜잭션 롤백인지 인덱스 업데이트인지를 나타냅니다. - 3 개의 공간 인덱스 이름
idx_[table_name]_geometry[_suffix]
QGIS DB Manager와 SpatiaLite-GUI의 두 응용 프로그램에서이 작업을 시도했습니다.
QGIS DB Manager는 다음과 같은 효과가 나타납니다.
geometry_columns
새 테이블 이름으로 올바르게 업데이트- 트리거의 이름을 바꾸지 않습니다. 트리거 정의는 부분적으로 수정되어
BEFORE [INSERT|UPDATE|DELETE]
새 테이블 이름 을 참조하지만 조건은에서 이전 이름을 계속 검색합니다geometry_columns
. - 공간 인덱스의 이름을 바꾸지 않습니다. 트리거가 여전히 오래된 인덱스 이름을 참조하기 때문에 이것이 중요한지 확실하지 않습니다.
SpatiaLite-GUI에서 Maintenance (유지 관리) → Rename table (테이블 이름 바꾸기)을 선택하면 SQL ALTER TABLE
문의 스텁 만 가져옵니다 . 이것은 간단한 SQL이며 QGIS DB Manager보다 훨씬 적습니다. 새 테이블 이름을 입력하면 테이블 이름이 바뀝니다. 다른 효과 :
- 에서 이름 이 바뀌지 않습니다.
geometry_columns.f_table_name
즉, 많은 GIS가 테이블을 공간 레이어로 보지 않습니다. - 트리거의 이름을 바꾸지 않습니다. 트리거 정의는 부분적으로 수정되어
BEFORE [INSERT|UPDATE|DELETE]
새 테이블 이름 을 참조하지만 조건은에서 이전 이름을 계속 검색합니다geometry_columns
. - 공간 인덱스의 이름을 바꾸지 않습니다. 트리거가 여전히 오래된 인덱스 이름을 참조하기 때문에 이것이 중요한지 확실하지 않습니다.
Spatialite-GUI는 올바른 항목을 추가 geometry_columns
(SRID, 지오메트리 유형 및 차원을 지정해야 함)하고 공간 인덱스를 작성 또는 재 구축하며 트리거 를 복구하는 지오메트리 열을 복구하는 옵션을 제공합니다. 이러한 함수 중 하나는 오래된 테이블 행, 트리거 또는 인덱스를 제거하여 DB에 많은 (해를 끼치 지 않지만 성가신) schmutz를 만듭니다.