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ößte ROWID , die eine Tabelle jemals hatte. Beim nächsten INSERT wird dieser Wert genommen, eins dazugezählt et voilá: das ist unsere nächste ROWID . 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 🙂


Anmelden zum Antworten