Tôi có một bảng sqlite (sqlite phiên bản 3.7.3), nơi null chèn vào cột khóa chính đang được undesirably tự động tăng lên:ngăn chặn autoincrementing số nguyên khóa chính?
sqlite> CREATE TABLE foo(bar INTEGER NOT NULL PRIMARY KEY);
sqlite> INSERT INTO foo(bar) VALUES(NULL);
sqlite> SELECT * FROM foo;
1
Trong sqlite docs, nó cho thấy rằng việc thêm các từ khóa AUTOINCREMENT
đến cột nên tạo hành vi này, nhưng có vẻ không phải là một từ khóa để ngăn chặn tự động incrementing ...
tôi cũng thấy rằng tôi có thể xây dựng sqlite với SQLITE_OMIT_AUTOINCREMENT
compile option, nhưng tôi không muốn vô hiệu hóa hành vi trên toàn cầu, chỉ dành cho cột cụ thể này.
Điều thú vị là, nếu tôi không bao gồm PRIMARY KEY
hạn chế, tôi nhận được hành vi mong muốn:
sqlite> CREATE TABLE FOO(bar integer NOT NULL);
sqlite> INSERT INTO FOO(bar) VALUES(NULL);
SQL error: foo.bar may not be NULL
Làm thế nào tôi có thể định nghĩa bảng sao cho giá trị NULL bị từ chối và giữ ràng buộc khoá chính?
wow, ngay trong tài liệu ...: D –
Bạn cũng có thể muốn kết hợp UNIQUE với NOT NULL để ngăn không cho tạo các bản ghi "vô dụng" trong bảng của bạn. – Timo