2010-06-12 35 views
6

Có vẻ như tôi không thể thêm một ràng buộc không null hoặc loại bỏ ràng buộc mặc định. Tôi muốn thêm một cột datetime vào một bảng và có tất cả các giá trị được đặt thành bất kỳ thứ gì (có lẽ là 1970 hoặc 2000) nhưng có vẻ như tôi không thể sử dụng không null mà không mặc định và không thể xóa mặc định khi được thêm vào. tôi có thể thêm cột này không? (một lần nữa chỉ là một datetime đồng bằng không null)Không thêm cột DateTime vào SQLite mà không có giá trị mặc định?

Trả lời

13

Thay vì sử dụng ALTER TABLE ADD COLUMN, hãy tạo một bảng mới có cột phụ và sao chép dữ liệu cũ của bạn. Điều này sẽ giải phóng bạn khỏi các hạn chế của ALTER TABLE và cho phép bạn có ràng buộc NOT NULL mà không có giá trị mặc định.

ALTER TABLE YourTable RENAME TO OldTable; 
CREATE TABLE YourTable (/* old cols */, NewColumn DATETIME NOT NULL); 
INSERT INTO YourTable SELECT *, '2000-01-01 00:00:00' FROM OldTable; 
DROP TABLE OldTable; 
+0

wow nhanh và tôi không thể làm điều này ngay từ lời nhắc. –

+0

một lần nữa. Đây là một giải pháp đơn giản và hoạt động rất tốt. Cảm ơn. (và nó chạy nhanh quá!) –

Các vấn đề liên quan