如何在sqlite中更改列?这是在Postgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Run Code Online (Sandbox Code Playgroud)
我相信在sqlite中根本没有ALTER COLUMN,只支持ALTER TABLE.
任何的想法?谢谢!
Ale*_*min 102
sqlite中没有ALTER COLUMN.
我相信你唯一的选择是:
此其他Stackoverflow答案详细解释了该过程
Noa*_*oah 62
虽然确实没有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;
Run Code Online (Sandbox Code Playgroud)
您需要关闭并重新打开连接或清空数据库以将更改重新加载到架构中.
例如:
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**
Run Code Online (Sandbox Code Playgroud)
参考资料如下:
pragma writable_schema
启用此pragma时,可以使用普通的UPDATE,INSERT和DELETE语句更改数据库的SQLITE_MASTER表.警告:滥用此pragma很容易导致数据库文件损坏.
[改变表(从http://www.sqlite.org/lang_altertable.html)
SQLite支持ALTER TABLE的有限子集.SQLite中的ALTER TABLE命令允许用户重命名表或向现有表添加新列.无法重命名列,删除列,或从表中添加或删除约束.

Raj*_*esh 30
SQLite支持ALTER TABLE的有限子集.SQLite中的ALTER TABLE命令允许用户重命名表或向现有表添加新列.无法重命名列,删除列,或从表中添加或删除约束.但您可以通过以下步骤更改表列数据类型或其他属性.
有关更多详细信息,请参阅链接.
小智 6
创建表 temp_Table(x,y[,etc]);
INSERT INTO temp_Table SELECT * FROM 表;
删除表表;
ALTER TABLE temp_Table 重命名为表;
感谢您帮助我找到一个确定的方法!
| 归档时间: |
|
| 查看次数: |
102747 次 |
| 最近记录: |