2016-08-09 102 views
0

Sagen, ich muss den Überblick über die Studenten von Studenten. Ihnen wird ein Nein zugewiesen, das auf Auto-Inkrement basiert. Die erste Person erhält die 1,2. Person bekommt 2 und so weiter. Aber wenn ein Student eine Gewohnheit anno will (sagen wir 32), muss ich ihm 32 zuweisen und wenn die nächste Person kommt, muss ich ihm 3 und die nächste Person 4 und so weiter zuweisen. Ich werde die Datenbank überprüfen, bevor ich die benutzerdefinierte Seriennummer festlege, um sicherzustellen, dass sie noch nicht existiert. Ich benutze sqlite3. Ich habe eine DB-Tabelle mit 1 Spalte (Autoinkrement-pk)SQL - Abrufen von Auto-Inkrement-Wert nach dem Einfügen eines benutzerdefinierten Werts

Datenbank: -

S.no 
    1 
    2 
    3 

Jetzt füge ich einen custom-Wert "32"

custom = 32 
    con.execute("INSERT INTO table (id) values (?)", (custom) 

Datenbank:

S.no 
    1 
    2 
    3 
    32 

Jetzt, wenn ich Auto-Inkrement verwenden, um Wert hinzuzufügen, wird die Datenbank:

S.no 
    1 
    2 
    3 
    32 
    33 
    34 

Was ich will es sein:

S.no 
    1 
    2 
    3 
    32 
    4 
    5 

Antwort

1

Dies ist nicht, wie SQLite's autoincrement algorithm funktioniert.

Um autoinkrementierende IDs zu erhalten, die kleiner als die größte tatsächlich verwendete ID sind, müssen Sie den Algorithmus selbst implementieren (d. H. Den aktuellen Zählerwert woanders speichern).

+0

, die möglicherweise auch Transaktionen erfordern, wenn mehrere Benutzer/Prozesse Zeilen (und IDs) einfügen. – Jakumi

+0

Also ich muss eine Variable speichern sagen "k" und k + = 1 es jedes Mal, wenn ich speichern und ignorieren, wenn eine benutzerdefinierte s.no hinzugefügt wird. Wird es herausfinden. Vielen Dank ! –