2011-12-08 34 views
39

Tôi hiện có một bảng gọi là tài khoản trong đó có một cột id được tạo ra nhưAndroid SQLite tự động tăng

'INTEGER PRIMARY KEY'

phép nói rằng tôi đã tạo ra hai người dùng để bảng có id 1 và 2

Nếu tôi xóa người dùng thứ hai và tạo ra một phần ba id là 2, tôi cần điều này là 3

Vì vậy, có vẻ như Android là chọn id có sẵn tiếp theo, làm thế nào tôi có thể thay đổi điều này để hơn của nó giống như một số thứ tự?

Kính trọng

+1

nhưng u cần khóa chính và điều này đang làm việc fine.why u cần điều này? –

Trả lời

84

Làm cho nó INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL. Dưới đây là the docs nói gì:

Nếu một cột có kiểu INTEGER PRIMARY KEY autoincrement rồi ... ROWID chọn cho hàng mới được ít nhất một lớn hơn ROWID lớn nhất có bao giờ hết tồn tại ở đó cùng một bảng.

Hành vi được thực hiện bởi từ khóa AUTOINCREMENT là tinh tế khác với hành vi mặc định. Với AUTOINCREMENT, các hàng có ROWID được chọn tự động được đảm bảo có ROWID có chưa bao giờ được sử dụng trước đó bởi cùng một bảng trong cùng một cơ sở dữ liệu. Và ROWID được tạo tự động được đảm bảo đơn điệu là tăng.

+1

Tôi muốn 'AUTOINCREMENT' không có' PRIMARY KEY'. Bởi vì tôi gán khóa chính là một cột khác, tôi đang sử dụng '_ID INTEGER AUTOINCREMENT NOT NULL' điều này gây ra lỗi. Xin hãy giúp tôi bro. – reegan29

+0

@ reegan29 AUTOINCREMENT CHỈ có thể được sử dụng với INTIMER PRIMARY KEY. Theo * Từ khóa AUTOINCREMENT thay đổi hành vi của thuật toán lựa chọn ROWID, AUTOINCREMENT không được cho phép trên các bảng KHÔNG CÓ ROWID hoặc trên bất kỳ cột nào khác ngoài INTIMER PRIMARY KEY.Bất kỳ nỗ lực nào để sử dụng AUTOINCREMENT trên bảng KHÔNG CÓ ROWID hoặc trên một cột khác với cột PRIMARY KEY KEY kết quả là một lỗi. * [SQLite Autoincrement] (https://sqlite.org/autoinc.html) – MikeT

9

SQLite AUTOINCREMENT là từ khóa được sử dụng để tự động tăng giá trị của trường trong bảng. Chúng tôi có thể tự động tăng giá trị trường bằng cách sử dụng từ khóa AUTOINCREMENT khi tạo bảng có tên cột cụ thể để tự động tăng giá trị đó.

Từ khóa AUTOINCREMENT chỉ có thể được sử dụng với trường INTEGER. Cú pháp:

Việc sử dụng cơ bản của AUTOINCREMENT từ khóa như sau:

CREATE TABLE table_name(
    column1 INTEGER AUTOINCREMENT, 
    column2 datatype, 
    column3 datatype, 
    ..... 
    columnN datatype, 
); 

Ví dụ Xem Dưới đây: Cân nhắc COMPANY bảng được tạo ra như sau:

sqlite> CREATE TABLE TB_COMPANY_INFO(
    ID INTEGER PRIMARY KEY AUTOINCREMENT, 
    NAME   TEXT  NOT NULL, 
    AGE   INT  NOT NULL, 
    ADDRESS  CHAR(50), 
    SALARY   REAL 
); 

Bây giờ, chèn sau bản ghi vào bảng TB_COMPANY_INFO:

INSERT INTO TB_COMPANY_INFO (NAME,AGE,ADDRESS,SALARY) 
VALUES ('MANOJ KUMAR', 40, 'Meerut,UP,INDIA', 200000.00); 

Bây giờ Chọn kỷ lục

SELECT *FROM TB_COMPANY_INFO 
    ID  NAME   AGE  ADDRESS    SALARY 
    1  Manoj Kumar  40  Meerut,UP,INDIA  200000.00 
+0

thanks ... I cần "INTEGER PRIMARY KEY AUTOINCREMENT" cho trường autoincrement .. và nhận được nó. –

+0

Bắn, tôi đã có 'AUTOINCREMENT' ở vị trí sai. Cảm ơn ví dụ! – booky99

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