如何在sqlite3中更改表中现有列的默认值?
我有一个名为notes
的表,其中一个名为hidden
的布尔列。默认设置为true,我想将其设置为false。
答案 0 :(得分:22)
我不认为你可以不更换整个表。来自fine manual:
SQLite未实现的SQL功能
完成ALTER TABLE支持
仅支持ALTER TABLE命令的RENAME TABLE和ADD COLUMN变体。其他类型的ALTER TABLE操作(如DROP COLUMN,ALTER COLUMN,ADD CONSTRAINT等)将被省略。
因此无法修改SQLite中的现有列。我认为您必须使用hidden
的相应默认值创建新表格,复制所有数据,删除原始notes
表格,然后rename the new one。
SQLite通过有目的地省略了很多功能而保持精益。
答案 1 :(得分:0)
SQLite数据库浏览器允许您删除列,因此可以使用它删除列,然后使用sqlite3命令行工具手动添加默认列。
答案 2 :(得分:0)
使用相同的架构(但是使用新的默认值)创建一个新数据库,将两者附加并迁移。
要删除“ ALTER TABLE”语法不支持的列或其他更改,我创建一个新表,将日期迁移到其中,删除旧表,并将新表重命名为原始名称。