sqlite-utils 發布 4.2 版本,大幅強化了 table.transform() 方法。該方法透過建立新表格、複製資料並取代舊表格的機制,支援複雜的 ALTER TABLE 操作,例如刪除欄位或更改類型。
此次更新讓 transform() 能保留更多邊緣案例的結構定義,包括檢查約束(check constraints)、唯一約束(unique constraints)以及描述欄位的註解。此外,版本也新增了專門用於檢查約束的內省屬性(introspection properties),並包含其他多項細微變更。
後續發現 4.2 版本存在導致崩潰的錯誤,已在 4.2.1 版本中修復。
事件背景
SQLite 原生的 ALTER TABLE 陳述式功能有限,通常只能新增欄位或重新命名表格,無法直接刪除欄位、更改欄位類型或修改主鍵。sqlite-utils 中的 table.transform() 方法透過實作多步驟模式來克服此限制,該模式會建立具有所需結構的新表格,複製資料後,再將新表格重新命名以取代舊表格。



