Làm cách nào để thay đổi cột trong sqlite? Đây là trongPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Tôi tin rằng không có ALTER COLUMN trong sqlite, chỉ ALTER TABLE được hỗ trợ.
Bất kỳ ý tưởng? Cảm ơn!
Làm cách nào để thay đổi cột trong sqlite? Đây là trongPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Tôi tin rằng không có ALTER COLUMN trong sqlite, chỉ ALTER TABLE được hỗ trợ.
Bất kỳ ý tưởng? Cảm ơn!
Câu trả lời:
Không có ALTER COLUMN trong sqlite.
Tôi tin rằng lựa chọn duy nhất của bạn là:
Câu trả lời Stackoverflow khác này giải thích chi tiết quy trình
Mặc dù đúng là không có ALTER COLUMN, nếu bạn chỉ muốn đổi tên cột, bỏ ràng buộc NOT NULL hoặc thay đổi kiểu dữ liệu, bạn có thể sử dụng nhóm lệnh nguy hiểm sau:
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;
Bạn sẽ cần đóng và mở lại kết nối của mình hoặc hút bụi cơ sở dữ liệu để tải lại các thay đổi vào giản đồ.
Ví dụ:
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**
TÀI LIỆU THAM KHẢO SAU:
pragma writeable_schema
Khi bật pragma này, các bảng SQLITE_MASTER trong đó có thể thay đổi cơ sở dữ liệu bằng các câu lệnh UPDATE, INSERT và DELETE thông thường. Cảnh báo: lạm dụng pragma này có thể dễ dàng dẫn đến tệp cơ sở dữ liệu bị hỏng.
[bảng thay đổi] (Từ http://www.sqlite.org/lang_altertable.html )
SQLite hỗ trợ một tập hợp con giới hạn của ALTER TABLE. Lệnh ALTER TABLE trong SQLite cho phép người dùng đổi tên bảng hoặc thêm cột mới vào bảng hiện có. Không thể đổi tên cột, xóa cột hoặc thêm hoặc xóa các ràng buộc khỏi bảng.
SQLite hỗ trợ một tập hợp con hạn chế ALTER TABLE. Lệnh ALTER TABLE trong SQLite cho phép người dùng đổi tên bảng hoặc thêm cột mới vào bảng hiện có. Không thể đổi tên cột, xóa cột hoặc thêm hoặc xóa các ràng buộc khỏi bảng. Nhưng bạn có thể thay đổi kiểu dữ liệu cột của bảng hoặc thuộc tính khác bằng các bước sau.
Để biết thêm chi tiết, bạn có thể tham khảo liên kết .