Domanda

Ho un'applicazione web in cui interagisco con un database MySql. Quando si elimina un record, sembra che il suo slot è riutilizzato la prossima volta che creo un nuovo record. Poiché ogni record ha una chiave primaria sequenziale, il prossimo disco avrà una nuova chiave dire 5, ma il nuovo record verrà inserito nel ultimo posto svuotato, dire dove registrare il numero 2 una volta. C'è un modo per avere nuovi record aggiunti direttamente in fondo alla lista? C'è un modo per farlo con MySQL Query Browser forse?

Questo è un esempio di quello che sto descrivendo:

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

quando record # 2 è andato, la prossima volta che faccio un nuovo add, record # 5 riprende il numero 2 posto:

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

C'è un modo consigliato per istruire MySQL (forse al momento della creazione tabella) che i nuovi record devono essere aggiunti solo in fondo alla lista? così, vorremmo disabilitare record-riutilizzo automatico.

Grazie in anticipo per il vostro aiuto Cordiali saluti

È stato utile?

Soluzione

È sufficiente aggiungere

ORDER BY id

alla fine della query (dove "id" è 1, 2, 3, 4, 5 colonna della tabella)

Altri suggerimenti

È possibile creare un trigger "sull'inserto", che utilizza una sequenza per impostare l'ID (scrittura dalla memoria in base a Oracle, in modo da dovrete controllare se è diverso in MySQL):

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 gestirà che per voi ad un certo livello. Tutte le tabelle InnoDB hanno qualche forma di chiave primaria che raggruppa, e questi sono tipicamente configurato per la gestione inserti in sequenza.

Se stai precluso l'utilizzo di InnoDB, credo che si dovrà ricorrere a modificare il codice sorgente per adattare il funzionamento MyISAM. Io non sono particolarmente familiarità con qualsiasi altro motore di archiviazione "normale" per MySQL, quindi non sono sicuro se c'è un'altra alternativa.

la creazione di campo data (DATE_ADDED) e ORDER BY DATE_ADDED sarebbe meglio

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top