SQL Liste : Was ist der "sql_sequance" table
-
Hallo Leute,
in meine SQListe datenbank befindet sich eine "sqlite_sequance" table! Was hat es damit auf sich? Habe irgendwasa mit AUTOINCREMENTE gelesen, aber noch nich wirklich en zusammenhang verstanden!
Grüße und Danke:)
-
Was hast Du denn an der Dokumentation nicht verstanden?
In der
sqlite_sequence
steht die größteROWID
, die eine Tabelle jemals hatte. Beim nächstenINSERT
wird dieser Wert genommen, eins dazugezählt et voilá: das ist unsere nächsteROWID
. Siehe Z.14: die id ist 2, obwohl die Tabelle "test" leer ist. D.h. über die gesamte Lebenszeit der Tabelle gibt's keine Doubletten bei den Primärschlüsseln.Im Gegensatz dazu die Z. 18ff. Die Tabelle wird ohne AUTOINCREMENT erstellt und siehe da: der Primärschlüssel 1 wird wiederverwendet (Z.25).
furblewurble@sinsemilla /tmp $ sqlite3 SQLite version 3.8.5 2014-06-04 14:06:34 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> CREATE TABLE test(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, value); sqlite> INSERT INTO test(value) values("Hallo, Welt!"); sqlite> SELECT * FROM test; 1|Hallo, Welt! sqlite> DELETE FROM test; sqlite> INSERT INTO test(value) values("Hello, World!"); sqlite> SELECT * FROM test; 2|Hello, World! sqlite> DROP TABLE test; sqlite> CREATE TABLE test(id INTEGER NOT NULL PRIMARY KEY, value); sqlite> INSERT INTO test(value) values("Hallo, Welt!"); sqlite> SELECT * FROM test; 1|Hallo, Welt! sqlite> DELETE FROM test; sqlite> INSERT INTO test(value) values("Hello, World!"); sqlite> SELECT * FROM test; 1|Hello, World! sqlite> .quit furblewurble@sinsemilla /tmp $
-
Ahaaaa..... danke für deine ausführlich antwort:) ja das war mir nich ganz klar.. danke