【问题标题】:sqlite insert statement BAD MOJOsqlite 插入语句 BAD MOJO
【发布时间】:2012-10-06 13:10:16
【问题描述】:

我有一个简单的问题,可能有一个简单的解决方案,但解决方案暗示了我...... 所以我有一个简单的表,即有 4 列的电话,我想添加一个新列。由于 SQLite 不修改表,我必须删除并创建。

phone_old

_id整型主键自增,
名称文本不为空,
值文本

电话

_id整型主键自增,
名称文本不为空,
itemState 文本不为空,
值文本

所以我执行以下操作: 1.我重命名旧表, 2. 我用额外的字段创建新的(在我的例子中是 itemState)和 3. 我选择并插入为 itemstate 定义默认值的所有内容。

1 ALTER TABLE Phone RENAME TO Phone_OLD;

2 CREATE table Phone(
_id integer primary key autoincrement, 
name text not null, 
itemState text not null, 
value text ); 

3) INSERT INTO Phone SELECT * , 'Synced' as itemState from Phone_OLD where Phone_OLD. ;

结果是项目状态(同步)被添加为最后一个字段,而不是在第 3 列中,即 itemState。

所以列名与行值不对应,这意味着 itemstate 被添加到末尾(作为行中的最后一列,而不是应该的位置 3)

只需将 itemstate 放在末尾即可解决问题,但由于生成了我的表创建语句,因此我必须重写一大堆代码才能这样做,老实说,这组查询让我很生气返回废话..

有什么想法吗?

【问题讨论】:

    标签: database sqlite


    【解决方案1】:

    Sqlite 确实支持追加列

     ALTER TABLE Phone ADD COLUMN [itemState] text not null default ''
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多