/ / V akých prípadoch by sa mala použiť AUTOINCREMENT namiesto predvoleného riadku ID? - sqlite, sqlite3

V akých prípadoch by sa mala použiť AUTOINCREMENT namiesto predvoleného riadku ID? - sqlite, sqlite3

V systéme Sqlite existujú dva spôsoby, ako vytvoriť monotónne zvyšujúce sa hodnoty primárneho kľúča vygenerované databázovým strojom pomocou predvoleného nastavenia ROWID mechanizmom alebo prostredníctvom systému AUTOINCREMENT mechanizmus.

sqlite> -- Through the default ROWID mechanism
sqlite> CREATE TABLE foo(id INTEGER NOT NULL PRIMARY KEY, foo);
sqlite> INSERT INTO foo (foo) VALUES ("foo");
sqlite> INSERT INTO foo (foo) VALUES ("bar");
sqlite> SELECT * FROM foo;
1|foo
2|bar
sqlite>
sqlite> -- Through the AUTOINCREMENT mechanism
sqlite> CREATE TABLE bar(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, bar);
sqlite> INSERT INTO bar (bar) VALUES ("foo");
sqlite> INSERT INTO bar (bar) VALUES ("bar");
sqlite> SELECT * FROM bar;
1|foo
2|bar
sqlite> -- Only the AUTOINCREMENT mechanism uses the sqlite_sequence table
sqlite> SELECT * FROM sqlite_sequence WHERE name in ("foo", "bar");
bar|2

Na dokumentácia Zdá sa, naznačujú, že používanie AUTOINCREMENT je to zlé:

Kľúčové slovo AUTOINCREMENT ukladá extra CPU, pamäte, disku a disk i/o réžiu a mali vyhnúť Ak nie bezpodmienečne potrebné.To obvykle nie je potrebný.

Ak AUTOINCREMENT kľúčové slovo po celé číslo primárneho kľúča, ktorý zmení Automatická Identifikácia riadka priradenia algoritmus na zabránenie opätovného ROWIDs počas životnosti databázy.Inými slovami, cieľom AUTOINCREMENT je aby sa zabránilo opätovnému ROWIDs z predtým odstránené riadky.

[S AUTOINCREMENT] SQLite uchováva záznam o najväčší Identifikácia riadka, ktoré tabuľky niekedy držal pomocou vnútornú tabuľku s názvom "sqlite_sequence". Sqlite_sequence tabuľka je vytvorený a Inicializujú automaticky vždy, keď normálne tabuľku, ktorá obsahuje stĺpec AUTOINCREMENT je vytvorený.Obsah tabuľky sqlite_sequence modifikovať pomocou bežných UPDATE, INSERT a DELETE výkazy.Ale zmeny tejto tabuľky budú pravdepodobne znepokojovať AUTOINCREMENT generovanie kľúčov algoritmu.Uistite sa, že viete, čo robíte predtým, než tieto zmeny uskutočniť.


V akých prípadoch je vhodné použiť kľúčové slovo AUTOINCREMENT?

odpovede:

2 pre odpoveď č. 1

Dokumentácia hovorí, že

účelom AUTOINCREMENT je aby sa zabránilo opätovnému ROWIDs z predtým odstránené riadky.

Preto je vhodné použiť kľúčové slovo AUTOINCREMENT, keď potrebujete, aby sa zabránilo opätovnému ROWIDs z predtým odstránené riadky.To môže byť potrebné, ak máte externé odkazy na tie odstránené riadky a nesmiete ich pliesť s nové riadky.