3

我已经在 Firefox 浏览器中下载了 sqlite manager 应用程序并打开了 sqlite manager 应用程序。

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

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

3) 插入新记录

但我想删除 sqltest 表中的“<strong>AGE”列

我使用如下的sql命令

ALTER TABLE SQLTEST 删除列年龄

SQLiteManager 消息说

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

那是什么错误?

4

3 回答 3

7

sqlite 不支持DROP COLUMNALTER TABLE. 您只能重命名表和添加列。

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

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

于 2014-01-09T11:44:17.573 回答
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;

归功于 Benoit。

于 2014-01-09T11:48:52.333 回答
2

创建表

创建表 SQLTEST(“SLNO”整数主键,“名称”文本,年龄整数)

如果要删除列

ALTER TABLE SQLTEST 重命名为 SQLTESTCOPY

创建表 SQLTEST(“SLNO”整数主键,“名称”文本)

INSERT INTO SQLTEST"SELECT "SLNO","NAME" FROM SQLTESTCOPY

删除表 SQLTESTCOPY

简单的。

于 2014-01-09T11:53:24.403 回答