Frage

Ich habe eine Web-Anwendung, wo ich mit einer MySQL-Datenbank zu interagieren. Wenn ich einen Datensatz löschen, so scheint es, dass seine Slot das nächste Mal, wenn ich einen neuen Datensatz erstellen wiederverwendet wird. Da jeder Datensatz einen sequenziellen Primärschlüssel hat, wird der nächste Datensatz einen neuer Schlüssel 5 sagen haben, aber der neue Datensatz wird in der letzten entleerte Stelle platziert werden, wo sagt 2 Satznummer verwendet werden. Gibt es eine Möglichkeit, um neue Datensätze zu haben, direkt am Ende der Liste hinzugefügt? Gibt es eine Möglichkeit, dass mit MySQL Query Browser vielleicht zu tun?

Dies ist ein Beispiel dafür, was ich beschreibe:

1 userName1 password1
2 userName2 password2 --> next operation will delete this record
3 userName3 password3
4 userName4 password4

, wenn Datensatz # 2 weg ist, ich das nächste Mal ein neues Add tun, Rekord # 5 nimmt Platz 2 bis:

1 userName1 password1
5 userName5 password5
3 userName3 password3
4 userName4 password4

Gibt es einen empfohlene Weg MySQL anweisen, (vielleicht bei der Tabellenerzeugung), dass neue Datensätze sollten nur am Ende der Liste hinzugefügt werden? so möchten wir die automatische Aufzeichnung-Wiederverwendung deaktivieren.

Vielen Dank im Voraus für Ihre Hilfe Mit freundlichen Grüßen

War es hilfreich?

Lösung

Fügen Sie einfach

ORDER BY id

an das Ende der Abfrage (wobei "id" ist 1, 2, 3, 4, 5 Spalte in der Tabelle)

Andere Tipps

Sie können einen „auf Insert“ Trigger erstellen, die eine Sequenz verwendet die ID einzustellen (aus dem Speicher zu schreiben nach Oracle, so dass Sie überprüfen müssen, werden, wenn es in MySQL anders ist):

create sequence table_name_id_seq order nocache cycle maxvalue 99999999;

create or replace trigger table_name_id
before insert on table_name for each row
begin
  select table_name_id_seq.nextval
    into :new.id
    from dual
  ;
end;

InnoDB wird, dass auf einer bestimmten Ebene für Sie. Alle InnoDB-Tabellen haben irgendeine Form von Primärschlüsseln, das gruppiert ist, und das ist typischerweise Setup-Einsätze nacheinander zu behandeln.

Wenn Sie von der Verwendung von InnoDB verhindert sind, glaube ich, werden Sie an sich ändernde Quellcode zurückgreifen müssen sich anpassen, wie MyISAM funktioniert. Ich bin nicht besonders vertraut mit einem anderen „normalen“ Speicher-Engine für MySQL, also bin ich nicht sicher, ob es eine weitere Alternative.

Erstellen von Datumsfeld (DATE_ADDED) und ORDER BY DATE_ADDED wäre besser,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top