如何从android中的sqlite表中删除列?

时间:2011-11-08 02:23:24

标签: android sqlite

我尝试使用以下

删除列
openDB.execSQL("ALTER TABLE favs" + " DROP COLUMN favsCount");

LogCat提供以下消息:

  

11-07 21:18:29.238:ERROR / Database(13952):当准备'ALTER TABLE favs DROP COLUMN favsCount'时,0x34e550上的失败1(接近“DROP”:语法错误)。

是否无法删除Android版sqlite中的字段?

2 个答案:

答案 0 :(得分:43)

抱歉,SQLite doesn't support DROP COLUMN

  

(11)如何在SQLite中添加或删除现有表中的列。

     

SQLite限制了ALTER TABLE支持,您可以使用该支持将列添加到表的末尾或更改表的名称。 [...]

     

例如,假设您有一个名为“t1”的表,其中列名为“a”,“b”和“c”,并且您要从此表中删除列“c”。以下步骤说明了如何做到这一点:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;

所以基本上,你必须使用“复制,删除表,创建新表,复制”技术来删除列。

答案 1 :(得分:4)

因为mu太短,所以Sqlite不允许使用alter table来删除列。在这里,您可以看到alter syntax definition

相关问题