Lapisan spasial (tabel) di SpatiaLite mencakup berbagai objek dan metadata pendukung, termasuk pemicu, indeks, dan entri dalam (minimal) geometry_columnstabel. Saya mencari (lebih disukai) GUI yang akan menangani semua perubahan yang diperlukan dalam sekali jalan, atau (fallback) dokumentasi semua perubahan yang diperlukan agar tidak merusak lapisan spasial.
Tabel memiliki:
- Masuk
geometry_columns.f_table_name. - Lima pemicu bernama
[prefix]_[table_name]_geometry, di mana awalan menunjukkan apakah itu kembalikan transaksi atau pembaruan indeks. - Tiga indeks spasial bernama
idx_[table_name]_geometry[_suffix]
Saya telah mencoba ini dalam dua aplikasi, QGIS DB Manager dan SpatiaLite-GUI.
QGIS DB Manager tampaknya memiliki efek berikut:
- Pembaruan yang benar
geometry_columnsdengan nama tabel baru - Tidak mengganti nama pemicu. Definisi pemicu sebagian dimodifikasi sehingga
BEFORE [INSERT|UPDATE|DELETE]merujuk ke nama tabel baru, tetapi kondisi masih mencari nama lama digeometry_columns. - Tidak mengganti nama indeks spasial. Tidak yakin apakah ini penting karena pemicu masih merujuk pada nama indeks yang lama.
Ketika Anda memilih Maintenance → Ganti nama tabel di SpatiaLite-GUI, Anda hanya mendapatkan tulisan SQL ALTER TABLE. Ini adalah SQL langsung dan bahkan kurang dari QGIS DB Manager. Jika Anda mengisi nama tabel baru, tabel akan diganti namanya. Efek lain:
- Tabel tidak tidak bisa diganti di
geometry_columns.f_table_name, yang berarti banyak GISes tidak akan melihat tabel sebagai lapisan spasial. - Tidak mengganti nama pemicu. Definisi pemicu sebagian dimodifikasi sehingga
BEFORE [INSERT|UPDATE|DELETE]merujuk ke nama tabel baru, tetapi kondisi masih mencari nama lama digeometry_columns. - Tidak mengganti nama indeks spasial. Tidak yakin apakah ini penting karena pemicu masih merujuk pada nama indeks yang lama.
Perhatikan bahwa Spatialite-GUI memang memberikan opsi untuk memulihkan kolom geometri yang menambahkan entri yang benar ke geometry_columns(tetapi mengharuskan Anda untuk menentukan SRID, tipe geometri, dan dimensi), untuk membangun atau membangun kembali indeks spasial, dan untuk memulihkan pemicu, tetapi tidak ada dari fungsi-fungsi ini menghapus baris tabel tua, pemicu, atau indeks, yang mengarah ke DB dengan banyak schmutz (mungkin tidak berbahaya tapi menjengkelkan) di dalamnya.