2011-12-08 15 views
39

Obecnie mam tabeli o nazwie użytkownika, który ma kolumnę id, który jest tworzony jako Powiedzmy Stworzyłem dwa użytkownikom tak tabela ma id 1Android SQLite auto przyrost

„INTEGER PRIMARY KEY”

i 2

Jeśli usunę drugiego użytkownika i stworzyć trzecią id 2, muszę to być 3

Więc wydaje Android jest wybór następnej dostępnej id, jak mogę to zmienić, aby jego bardziej jak numer kolejny?

Pozdrowienia

+1

ale u potrzeba klucza podstawowego i ten fine.why pracuje u potrzebne? –

Odpowiedz

84

Make it INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL. Oto co the docs powiedzieć:

Jeśli kolumna ma typ INTEGER PRIMARY KEY autoIncrement potem ... ROWID wybrany dla nowego wiersza jest przynajmniej jedna większa niż największa ROWID, który ma kiedykolwiek istniał na tym, że ten sam stół.

Zachowanie zaimplementowane przez słowo kluczowe AUTOINCREMENT jest subtelnie inne niż domyślne zachowanie. Dzięki AUTOINCREMENT zagwarantowane są wiersze z automatycznie wybranymi identyfikatorami ROWID o numerach , które nigdy wcześniej nie były używane przez tę samą tabelę w tej samej bazie danych. Ponadto automatycznie generowane identyfikatory ROWID mają być monotonicznie zwiększane o .

+1

Chcę 'AUTOINCREMENT' bez' PRIMARY KEY'. Ponieważ przypisuję klucz podstawowy jest innej kolumny, używam '_ID INTEGER AUTOINCREMENT NOT NULL' to zrobić błąd. Proszę mi pomóc bro. – reegan29

+0

@ reegan29 AUTOINCREMENT można używać TYLKO Z INTELIGENTNYM KLUCZEM. Jak na * Ponieważ słowo kluczowe AUTOINCREMENT zmienia zachowanie algorytmu wyboru ROWID, AUTOINCREMENT nie jest dozwolone w tabelach BEZ ROWID lub w kolumnie tabeli innej niż INTEGER PRIMARY KEY.Każda próba użycia AUTOINCREMENT w tabeli BEZ ROWIDU lub w kolumnie innej niż kolumna INTEGER PRIMARY KEY powoduje błąd. * [SQLite Autoinkrement] (https://sqlite.org/autoinc.html) – MikeT

9

SQLite AUTOINCREMENT to słowo kluczowe używane do automatycznego zwiększania wartości pola w tabeli. Możemy automatycznie zwiększać wartość pola za pomocą słowa kluczowego AUTOINCREMENT podczas tworzenia tabeli z określoną nazwą kolumny, aby automatycznie zwiększyć jej wartość.

Słowo kluczowe AUTOINCREMENT może być używane tylko z polem INTEGER. Składnia:

Podstawowym użycie AUTOINCREMENT słów kluczowych jest następująca:

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

Dla przykładu zobaczyć poniżej: Rozważmy COMPANY tabelę być tworzone w następujący sposób:

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

Teraz wstawić następujący zapisy do tabeli TB_COMPANY_INFO:

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

Teraz Wybierz rekord

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

dzięki ... Potrzebowałem "INTEGRALNEGO KLUCZOWEGO NAJWYŻSZEGO AUTOINCREMENTU" dla pola autoincrement .. i dostałem to. –

+0

Strzelaj, miałem "AUTOINCREMENT" w niewłaściwym miejscu. Dzięki za przykład! – booky99