我已经在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]
什么是错误?
答案 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
容易。