Ich bin heute auf merkwürdiges Verhalten gestoßen und habe mich gefragt, ob es erwartet wird oder Standard ist. Wir verwenden Hibernate gegen MySQL5. Im Laufe der Programmierung habe ich vergessen, eine Transaktion abzuschließen, ich nehme an, dass andere sich darauf beziehen können.Nicht festgeschriebene Datenbanktransaktionen und automatisch inkrementierte Spalten
Als ich schließlich die Transaktion geschlossen, lief der Code und überprüfte die Tabelle, bemerkte ich Folgendes. Alle Male habe ich meinen Code falsch ausgeführt, ohne die Transaktion zu beenden, was nicht dazu führte, dass tatsächlich Zeilen eingefügt wurden, trotzdem erhöhte ich den Primärschlüsselwert des Autoinkrementierungs-Ersatzschlüssels, so dass ich eine Lücke (dh keine Zeilen mit dem ID-Feldwert von 751 bis 762).
Ist dies erwartet oder Standardverhalten? Könnte es abhängig von der Datenbank variieren? Und/oder hat die Hibernate-eigene Transaktionsabstraktion einen möglichen Einfluss darauf?
Ich wusste die Antwort, aber das ist immer noch eine interessante Frage! – RichardOD
Idealerweise sollte Ihre Anwendung/Ihr Design nicht durch irgendwelche Lücken in der Sequenz beeinträchtigt werden - Sie sollten sich nie in einer Situation befinden, in der dies tatsächlich von Bedeutung ist –