问题描述
sqlite> .schema autor
CREATE TABLE autor (ID INTEGER PRIMARY KEY,NOME TEXT,CIDADE TEXT,ESTADO TEXT,TELEFONE TEXT,idade number);
sqlite> alter table autor drop idade;
Error: near "drop": Syntax error
(也尝试使用DROP COLUMN代替DROP)。 请帮助,这是一个错误吗?
解决方法
您不能使用SQLite执行此操作,因为它不支持删除列。这是a documented limitation(重点是我):
仅支持
RENAME TABLE
命令的ADD COLUMN
,RENAME COLUMN
和ALTER TABLE
变体。其他类型的ALTER TABLE
操作,例如DROP COLUMN
,ALTER COLUMN
,ADD CONSTRAINT
等。
一个可能的解决方法是用正确的结构重新创建另一个表,然后复制数据,删除旧表并重命名新表:
create table autor_new (
id integer primary key,nome text,cidade text,estado text,telefone text
);
insert into autor_new select id,nome,cidade,estado,telefone from autor;
drop table autor; -- back it up first!
alter table autor_new rename to autor;