sqlite3更改列的默认值

时间:2012-03-30 00:41:54

标签: sqlite

如何在sqlite3中更改表中现有列的默认值?

我有一个名为notes的表,其中一个名为hidden的布尔列。默认设置为true,我想将其设置为false。

3 个答案:

答案 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”语法不支持的列或其他更改,我创建一个新表,将日期迁移到其中,删除旧表,并将新表重命名为原始名称。

https://stackoverflow.com/a/998652/1020467

https://www.sqlite.org/lang_altertable.html