2011-12-08 59 views
39

我現在有一個表稱爲用戶,其具有創建一個ID列的Android SQLite的自動遞增

「INTEGER PRIMARY KEY」

可以說,我已經創建了兩個用戶,讓該表有ID爲1, 2

如果我刪除第二個用戶,並創建第三id爲2,我需要這是3

如此看來Android是選擇下一個可用的ID,我怎樣才能改變這種它更像序列號?

Regards

+1

但你需要主鍵,這是工作fine.why u需要呢? –

回答

84

使之成爲INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL。下面是the docs說:

如果列類型的INTEGER PRIMARY KEY AUTOINCREMENT然後...的ROWID選擇 新行相比,具有 中曾經存在之前最大的ROWID較大的至少一個同一張桌子。

由AUTOINCREMENT關鍵字實現的行爲與默認行爲不同,其實微妙地爲 。使用AUTOINCREMENT時,自動選擇ROWID的行將保證具有 之前從未在同一個數據庫中使用過的ROWID。並且自動生成的ROWID保證單調增加 。

+1

我想'AUTOINCREMENT'沒有'PRIMARY KEY'。因爲我分配的主鍵是另一列,我正在使用'_ID INTEGER AUTOINCREMENT NOT NULL',這使得error.Please幫助我兄弟。 – reegan29

+0

@ reegan29 AUTOINCREMENT只能與INTEGER PRIMARY KEY一起使用。按*因爲AUTOINCREMENT關鍵字會更改ROWID選擇算法的行爲,所以在WITHOUT ROWID表或除INTEGER PRIMARY KEY之外的任何表列上不允許使用AUTOINCREMENT。任何在WITHOUT ROWID表或除INTEGER PRIMARY KEY列之外的列上使用AUTOINCREMENT的嘗試都會導致錯誤。* [SQLite Autoincrement](https://sqlite.org/autoinc.html) – MikeT

9

SQLite AUTOINCREMENT是一個關鍵字,用於自動遞增表中字段的值。在創建具有特定列名稱的表格時,我們可以使用AUTOINCREMENT關鍵字自動遞增字段值以自動遞增。

關鍵字AUTOINCREMENT只能與INTEGER字段一起使用。 語法:

AUTOINCREMENT關鍵字的基本用法如下:

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

對於實施例見下文: 考慮COMPANY表被創建如下:

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

現在,插入以下記錄到表TB_COMPANY_INFO

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

現在選擇錄製

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

thanks ... I需要「INTEGER PRIMARY KEY AUTOINCREMENT」自動增量字段..並得到它。 –

+0

拍攝,我有'AUTOINCREMENT'在錯誤的地方。感謝這個例子! – booky99