2012-03-30 565 views
9

如何更改sqlite3中表中現有列的默認值?sqlite3更改列默認值

我有一個名爲notes的表,其布爾列名爲hidden。默認設置爲true,我想將其設置爲false。

回答

20

我不認爲你可以不更換整個表。從fine manual

SQL功能SQLite不落實

完成ALTER TABLE支持
只有重命名錶並添加ALTER TABLE命令列變體的支持。其他類型的ALTER TABLE操作(例如DROP COLUMN,ALTER COLUMN,ADD CONSTRAINT等)被省略。

因此,無法修改SQLite中的現有列。我認爲你必須創建一個新的表格,並在hidden的相應默認值下複製所有數據,然後刪除原始表notes,然後刪除rename the new one

SQLite通過故意省略許多功能來保持精益。

+1

有一點可能有助於這方面。在運行'drop table '之前,確保你運行'.dump'並獲得模式轉儲和數據。然後,您可以使用它快速創建修改的模式並提取數據。 – codarrior 2017-08-23 02:37:23

0

SQLite數據庫瀏覽器允許您刪除列,以便您可以刪除列,然後使用sqlite3命令行工具手動添加缺省列。

+0

不幸的是,要實現這一點,它可能會像創建臨時表一樣在引擎蓋下執行所有類型的詭計: http://stackoverflow.com/q/805363/32453 – rogerdpack 2016-10-20 22:44:04