1
ฉันจะเปลี่ยนชื่อโต๊ะใน SpatiaLite DB ได้อย่างไร
เลเยอร์พื้นที่ (ตาราง) ใน SpatiaLite ประกอบด้วยวัตถุและเมตาดาต้าที่รองรับต่าง ๆ รวมถึงทริกเกอร์ดัชนีและรายการใน (อย่างน้อยที่สุด) ในgeometry_columnsตาราง ฉันกำลังมองหา (ควร) GUI ที่จะจัดการกับการเปลี่ยนแปลงที่จำเป็นทั้งหมดในครั้งเดียวหรือ (ทางเลือก) เอกสารประกอบของการเปลี่ยนแปลงที่จำเป็นทั้งหมดเพื่อที่จะไม่ทำลายชั้นอวกาศ ตารางมี: geometry_columns.f_table_nameรายการใน ทริกเกอร์ชื่อห้าตัว[prefix]_[table_name]_geometryโดยที่คำนำหน้าระบุว่าเป็นการย้อนกลับธุรกรรมหรือการอัพเดตดัชนี ดัชนีอวกาศสามชื่อ idx_[table_name]_geometry[_suffix] ฉันได้ลองสิ่งนี้ในสองแอพพลิเคชั่นคือ QGIS DB Manager และ SpatiaLite-GUI QGIS DB Manager ปรากฏว่ามีผลกระทบต่อไปนี้ อัปเดตอย่างถูกต้องgeometry_columnsด้วยชื่อตารางใหม่ ห้ามเปลี่ยนชื่อทริกเกอร์ นิยามทริกเกอร์ที่มีการแก้ไขบางส่วนเพื่อให้BEFORE [INSERT|UPDATE|DELETE]หมายถึงชื่อตารางใหม่ geometry_columnsแต่ยังคงสภาพการค้นหาสำหรับชื่อเก่า ห้ามเปลี่ยนชื่อดัชนีเชิงพื้นที่ ไม่แน่ใจว่าสิ่งนี้สำคัญหรือไม่เพราะทริกเกอร์ยังคงอ้างถึงชื่อดัชนีเก่า เมื่อคุณเลือกการบำรุงรักษา→เปลี่ยนชื่อตารางใน SpatiaLite-GUI คุณเพิ่งได้สตับของALTER TABLEคำสั่งSQL นี่คือ SQL ที่ตรงไปตรงมาและทำได้น้อยกว่า QGIS DB Manager หากคุณกรอกชื่อตารางใหม่ตารางจะถูกเปลี่ยนชื่อ ผลกระทบอื่น ๆ …