简单的SQL问题:语法错误在哪里?

问题描述

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 COLUMNRENAME COLUMNALTER TABLE变体。其他类型的ALTER TABLE操作,例如 DROP COLUMN ALTER COLUMNADD 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;