Come faccio a creare un campo AUTOINCREMENT?
Risposta breve: una colonna dichiarata INTEGER PRIMARY KEY sarà autoincremento.
ecco la risposta lunga: se si dichiara una colonna di una tabella per essere INTEGER PRIMARY KEY, quindi ogni volta che si inserisce un NULL in quella colonna della tabella , il NULL è automaticamente convertito in un numero intero che è uno superiore al valore più grande della colonna su tutte le altre righe nella tabella o 1 se la tabella è vuota. (. Se la più grande chiave intera possibile, 9223372036854775807, poi un inutilizzato valore della chiave è scelto a caso) Ad esempio, si supponga di avere una tabella come questo:
CREATE TABLE t1( a INTEGER PRIMARY
KEY, b INTEGER);
Con questa tabella, il dichiarazione
INSERT INTO t1 VALUES(NULL,123);
è logicamente equivale a dire:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
v'è una funzione 0.123.516,41 miladenominato sqlite3_last_insert_rowid()
che restituirà la chiave intera per l'operazione di inserimento più recente.
Si noti che il numero intero è uno maggiore della chiave più grande che era nella tabella appena prima dell'inserto. La nuova chiave sarà univoca su tutte le chiavi attualmente nella tabella, ma è possibile che si sovrapponga a con chiavi che sono state precedentemente eliminate dalla tabella . Per creare chiavi univoche sulla durata della tabella , aggiungere la parola chiave AUTOINCREMENT alla dichiarazione INTEGER PRIMARY KEY. Quindi il tasto scelto sarà uno in più rispetto alla chiave più grande mai esistita nella tabella . Se la chiave più grande possibile di è esistita in precedenza nella tabella , l'INSERT non riuscirà con un codice di errore SQLITE_FULL.
Mi piace questo tipo di risposte. Dovresti comprimerlo in RTFM :) – lmsasu