如何更改sqlite中的列?这是用Postgresql编写的
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;我相信sqlite中根本没有ALTER COLUMN,只支持ALTER TABLE。
有什么想法吗?谢谢!
发布于 2010-10-24 11:45:33
sqlite中没有ALTER列。
我相信你唯一的选择就是:
This other Stackoverflow answer详细解释了这一过程
发布于 2011-01-28 02:11:06
虽然is no ALTER COLUMN是真的,但如果您只想重命名该列、删除NOT NULL约束或更改数据类型,则可以使用以下一组危险命令:
PRAGMA writable_schema = 1;
UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';
PRAGMA writable_schema = 0;您需要关闭并重新打开连接,或者清空数据库以将更改重新加载到模式中。
例如:
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **create table BOOKS ( title TEXT NOT NULL, publication_date TEXT NOT
NULL);**
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
Error: BOOKS.publication_date may not be NULL
sqlite> **PRAGMA writable_schema = 1;**
sqlite> **UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT
NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';**
sqlite> **PRAGMA writable_schema = 0;**
sqlite> **.q**
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
sqlite> **.q** 以下是参考资料:
当此编译指示打开时,可以使用普通的UPDATE、INSERT和DELETE语句更改其中的数据库的SQLITE_MASTER表。警告:误用此编译指示很容易导致数据库文件损坏。
alter table
SQLite支持ALTER TABLE的有限子集。SQLite中的ALTER table命令允许用户重命名表或向现有表中添加新列。不能重命名列、删除列,也不能在表中添加或删除约束。

发布于 2012-10-11 19:32:41
SQLite支持ALTER TABLE的有限子集。SQLite中的ALTER table命令允许用户重命名表或向现有表中添加新列。不能重命名列、删除列,也不能在表中添加或删除约束。但是您可以通过以下步骤更改表列数据类型或其他属性。
CREATE TABLE BEGIN TRANSACTION;
有关更多详细信息,请参阅link。
https://stackoverflow.com/questions/4007014
复制相似问题