SQLiteManager中的DROP语法错误

Taj*_*jan 3 sqlite sqlitemanager ios

我已经在Firefox浏览器中下载了sqlite manager app并打开了sqlite manager app.

1)创建名为DBSQLTEST的数据库.

2)创建的名为SQLTEST的表包含三个字段是SLNO,NAMEAGE

3)插入新记录

但我想删除sqltest表中的' AGE '列

我使用如下的sql命令

ALTER TABLE SQLTEST DROP COLUMN AGE

SQLiteManager消息说

SQLiteManager:可能的SQL语法错误:ALTER TABLE SQLTEST DROP COLUMN AGE [near"DROP":语法错误]异常名称:NS_ERROR_FAILURE异常消息:组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[mozIStorageConnection.createStatement]

什么是错误?

laa*_*lto 6

SQLite不支持DROP COLUMNALTER TABLE.您只能重命名表并添加列.

参考:http://www.sqlite.org/lang_altertable.html

如果需要删除列,请创建一个新表,在那里复制数据,删除旧表并将表重命名为其名称.

  • 完成:https://sqlite.org/lang_altertable.html#altertabdropcol SQLite 3.35.0 引入了对“ALTER TABLE DROP COLUMN”的支持。 (4认同)
  • 看来sqlite现在确实支持DROP COLUMN,但它有点有限。您链接的页面上对此进行了解释(可能已更新)。 (2认同)

Tos*_*lji 5

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;
Run Code Online (Sandbox Code Playgroud)

归功于 Benoit。