SQLiteManager中的DROP语法错误

时间:2014-01-09 11:43:09

标签: ios sqlite sqlitemanager

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

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

2)名为 SQLTEST 的创建表包含三个字段 SLNO NAME AGE

3)插入新记录

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

我使用下面的SQL命令

ALTER TABLE SQLTEST DROP COLUMN AGE

SQLiteManager消息说

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

什么是错误?

3 个答案:

答案 0 :(得分:6)

sqlite不支持DROP COLUMN中的ALTER TABLE。您只能重命名表并添加列。

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

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

答案 1 :(得分:2)

SQLite does not fully support ALTER TABLE statements。您只能重命名表或添加列。

如果要删除列,最好的选择是创建一个没有列的新表,并删除旧表以重命名新表。

例如,假设您有一个名为" 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;

致Benoit的信用。

答案 2 :(得分:1)

创建表

CREATE TABLE SQLTEST(“SLNO”INTEGER PRIMARY KEY,“NAME”TEXT,AGE INTEGER)

如果要删除列

ALTER TABLE SQLTEST RENAME TO SQLTESTCOPY

CREATE TABLE SQLTEST(“SLNO”INTEGER PRIMARY KEY,“NAME”TEXT)

INSERT INTO SQLTEST“SELECT”SLNO“,”NAME“FROM SQLTESTCOPY

DROP TABLE SQLTESTCOPY

容易。