首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite修改列

SQLite修改列
EN

Stack Overflow用户
提问于 2010-04-21 19:17:22
回答 5查看 91.8K关注 0票数 54

我需要修改SQLite数据库中的一个列,但是由于数据库已经在生产,所以我必须通过编程进行修改。从我的研究中,我发现,为了做到这一点,我必须做以下几点。

  • 使用新架构创建新表
  • 将数据从旧表复制到新表
  • 放下旧桌子
  • 将新表重命名为旧表名

对于一些应该相对容易的事情来说,这似乎是一项荒谬的工作。难道没有更简单的方法吗?我所需要做的就是更改现有列上的约束,并给它一个默认值。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-21 19:20:20

这是众所周知的SQLite的缺点之一(ALTER TABLE上不支持MODIFY COLUMN ),但在SQLite没有实现的SQL特性列表上是这样的。

编辑:当页面被更新时,提到的删除位可能在以后的版本中得到支持,以表明不再是这种情况。

票数 51
EN

Stack Overflow用户

发布于 2012-04-30 14:50:43

如果修改不太大(例如更改varchar的长度),则可以转储db,手动编辑数据库定义并再次导入:

代码语言:javascript
复制
echo '.dump' | sqlite3 test.db > test.dump

然后使用文本编辑器打开文件,搜索要修改的定义,然后:

代码语言:javascript
复制
cat test.dump | sqlite3 new-test.db
票数 29
EN

Stack Overflow用户

发布于 2010-04-21 19:19:50

正如这里所说,这些特性不是由SQLite实现的。

另外,您可以使用带有select的create进行第一步:

代码语言:javascript
复制
CREATE TABLE tmp_table AS SELECT id, name FROM src_table
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2685885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档