【发布时间】:2017-10-25 17:39:30
【问题描述】:
为什么sqlite数据库有“不从表中删除列”的限制 在一个命令中? 有没有可能在未来的版本中添加它?
【问题讨论】:
标签: android database sqlite android-sqlite
为什么sqlite数据库有“不从表中删除列”的限制 在一个命令中? 有没有可能在未来的版本中添加它?
【问题讨论】:
标签: android database sqlite android-sqlite
现在支持ALTER TABLE DROP COLUMN,从 2021 年 3 月 12 日发布的 3.35.0 开始。
【讨论】:
SQLite 支持有限的 ALTER TABLE 子集。更改表 SQLite 中的命令允许用户重命名表或添加新的 列到现有表。无法重命名列, 删除列,或者在表中添加或删除约束。
https://sqlite.org/lang_altertable.html
不,你不能。
有没有可能在未来的版本中添加它?
好吧,我们不能告诉你。即使他们会添加它,仍然有很多 Android 设备具有旧版本的 SQLite,但没有该功能。
但是,您可以从此答案中删除这样的列:
【讨论】:
ALTER TABLE 语句完全支持那些无需重写整个表即可轻松实现的操作。 (添加新列时,所有行中都缺少该值;读取时将替换为该列的默认值。)
删除列(或其他东西,如重新排序列)的能力会给 SQLite 库添加大量复杂的代码。 但是,SQLite 被设计为嵌入式数据库,因此必须注意节省资源。不太可能添加如此大量的代码。
【讨论】:
http://www.sqlite.org/faq.html#q11
SQLite 具有有限的 ALTER TABLE 支持,您可以使用它来将列添加到表的末尾或更改表的名称。如果要对表结构进行更复杂的更改,则必须重新创建表。您可以将现有数据保存到临时表中,删除旧表,创建新表,然后将数据从临时表中复制回来。
所以你不能只删除列
【讨论】: