【问题标题】:Altering and adding column to the table in sqlite3在 sqlite3 中更改表并将列添加到表中
【发布时间】:2013-03-18 01:45:57
【问题描述】:

如果我更改表并添加新列,则会添加从该表中删除的数据。

ALTER TABLE MyTable ADD COLUMN noOfDays integer default 0 NOT NULL 

上述 SQL 命令会删除 MyTable,然后使用 noOfDays 列对其进行 ALTER,还是会简单地添加 noOfDays 列而不删除它。

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    不,add 只是添加列。既不会删除其数据,也不会删除表。

    附言来自文档
    “注意:另外,在添加 CHECK 约束时,不会针对表中预先存在的行测试 CHECK 约束。” (查看SQLite手册了解更多)

    【讨论】:

    • 非常感谢您的回答!
    • 据我所知,您必须将默认值更新为现有行(现在无法在文档中找到它);检查例如stackoverflow.com/questions/3492947/…
    • 我相信我上面的 SQL 会创建一个 noOfDays 列并插入 0 作为默认值。
    • 你为什么要这样做 UPDATE MyTable SET noOfDays = 0;一旦创建列,它不应该默认为 0!
    • 很抱歉造成混乱;您的 ALTER 命令运行良好;但是,检查约束有一个限制 - 将其添加为上面的注释
    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多