German SQL - Update autoincrement-Feld

peternmb

Well-Known Member
Licensed User
Longtime User
HAllo,

gibt es in B4A eine Möglichkeit, z.B. nach dem Löschen von Datensätzen, die Reihenfolge eines autoincrement-Feldes wieder upzudaten.
Was ich bisher im Web gefunden habe funktioniert anscheinend unter B4A nicht, ich erhalte ich eine Syntax-Fehlermeldung.
B4X:
SQL1.ExecNonQuery2("ALTER TABLE table2 AUTO_INCREMENT=?", Array As Object(1))

Das ist die Fehlermeldung die ich erhalte:
android.database.sqlite.SQLiteException: near "AUTO_INCREMENT": syntax error (code 1): , while compiling: ALTER TABLE table2 AUTO_INCREMENT=?
 

b4x-de

Active Member
Licensed User
Longtime User
Hallo, nein, ein Autoincremet wird durch das DBS vergeben. Es wäre falsch, ein Autoinkrement zu verwenden, wenn man damit eine Bedeutung verbinden will. Ich schlage vor, eine weitere Spalte einzufügen, deren Wert dann angepasst werden kann. Viele Grüße Thomas
 

peternmb

Well-Known Member
Licensed User
Longtime User
Das verstehe ich soweit, ich habe das Feld ID jetzt als Integer definiert und vergebe die lfd. Nummer bei einem Eintrag selber.
Jetzt möchte ich nur, z.B. nach dem Löschen eines Datensatzes alles neu durchnummerieren.
So funktioniert es nicht, wo ist mein Fehler?
B4X:
Sub update_ID
    Dim TableI As List
    statement="SELECT ID FROM table2"
    TableI = ExecuteMemoryTable(SQL1,statement, Null, 0)
    '
    For i = 0 To TableI.Size - 1
        SQL1.ExecNonQuery2("UPDATE table2 SET ID=?", Array As Object(i+1))
    Next
End Sub
 
Top