Các lớp không gian (bảng) trong SpatiaLite bao gồm các đối tượng và siêu dữ liệu hỗ trợ khác nhau, bao gồm các trình kích hoạt, chỉ mục và các mục trong (tối thiểu) geometry_columns
bảng. Tôi đang tìm kiếm (tốt nhất) một GUI sẽ xử lý tất cả các thay đổi cần thiết trong một lần hoặc tài liệu (dự phòng) về tất cả các thay đổi cần thiết để không phá vỡ các lớp không gian.
Bàn có:
- Nhập cảnh vào
geometry_columns.f_table_name
. - Năm kích hoạt được đặt tên
[prefix]_[table_name]_geometry
, trong đó tiền tố cho biết liệu đó là một giao dịch khôi phục hoặc cập nhật chỉ mục. - Ba chỉ số không gian được đặt tên
idx_[table_name]_geometry[_suffix]
Tôi đã thử điều này trong hai ứng dụng, Trình quản lý DB QGIS và SpatiaLite-GUI.
Trình quản lý DBISIS xuất hiện có các hiệu ứng sau:
- Cập nhật chính xác
geometry_columns
với tên bảng mới - Không đổi tên kích hoạt. Định nghĩa kích hoạt được sửa đổi một phần
BEFORE [INSERT|UPDATE|DELETE]
để tham chiếu đến tên bảng mới, nhưng điều kiện vẫn tìm kiếm tên cũ tronggeometry_columns
. - Không đổi tên các chỉ số không gian. Không chắc chắn nếu điều này quan trọng bởi vì kích hoạt vẫn đề cập đến tên chỉ mục cũ.
Khi bạn chọn Bảo trì → Đổi tên bảng trong SpatiaLite-GUI, bạn chỉ cần lấy sơ khai của câu lệnh SQL ALTER TABLE
. Đây là SQL đơn giản và thậm chí còn ít hơn Trình quản lý DBISIS. Nếu bạn điền tên bảng mới, bảng sẽ được đổi tên. Tác dụng khác:
- Bảng không được đổi tên
geometry_columns.f_table_name
, điều đó có nghĩa là nhiều GIS sẽ không xem bảng là một lớp không gian. - Không đổi tên kích hoạt. Định nghĩa kích hoạt được sửa đổi một phần
BEFORE [INSERT|UPDATE|DELETE]
để tham chiếu đến tên bảng mới, nhưng điều kiện vẫn tìm kiếm tên cũ tronggeometry_columns
. - Không đổi tên các chỉ số không gian. Không chắc chắn nếu điều này quan trọng bởi vì kích hoạt vẫn đề cập đến tên chỉ mục cũ.
Lưu ý rằng Spatialite-GUI cung cấp tùy chọn khôi phục cột hình học có thêm mục nhập chính xác geometry_columns
(nhưng yêu cầu bạn chỉ định SRID, loại hình học và kích thước), để xây dựng hoặc xây dựng lại chỉ mục không gian và để khôi phục trình kích hoạt, nhưng không có trong số các hàm này sẽ loại bỏ các hàng, bảng kích hoạt hoặc chỉ mục cũ, dẫn đến một DB có rất nhiều schmutz (có thể vô hại nhưng gây khó chịu) trong đó.