Zusammenfassung des Problems: Mit MySQL und SQLite, ein Fehler INSERT OR IGNORE
auf einer Tabelle mit AUTOINCREMENT noch erhöht den autoinkrementierten Wert. Dies wurde hier diskutiert: INSERT IGNORE increases auto increment counter even no record is added?Kann AUTOINCREASE bei fehlgeschlagenem "INSERT OR IGNORE" verhindert werden?
Mein Problem: eine Tabelle mit 99% Einsätze gescheitert endet mit großen Indexzahlen, zum Beispiel Rekord 1500 hat den Index 165200.
Dies ist unpraktisch, so ich suche eine Möglichkeit, diesem Verhalten entgegenzuwirken.
Da INSERT OR IGNORE
ist angeblich die gleiche wie INSERT ON CONFLICT IGNORE
, habe ich gedacht INSERT ON CONFLICT FAIL
oder INSERT ON CONFLICT ABORT
verwenden.
Mein Problem ist, dass ich von einem SELECT
auf diese Weise am Einfügen:
INSERT OR IGNORE INTO t1 (x,y,z,) SELECT * FROM t2
Diese Syntax nicht ON CONFLICT FAIL
akzeptiert. Weder der beiden letztgenannten Arbeit:
INSERT ON CONFLICT FAIL INTO t1 (x,y,z,) SELECT * FROM t2
INSERT INTO t1 (x,y,z,) SELECT * FROM t2 ON CONFLICT FAIL
Irgendwelche Gedanken oder Hinweise?
Hallo, vielen Dank für den Vorschlag. –