la désactivation de la réutilisation des enregistrements supprimés dans Mysql

StackOverflow https://stackoverflow.com/questions/1058291

  •  21-08-2019
  •  | 
  •  

Question

J'ai une application web où je suis en contact avec une base de données MySql. Lorsque je supprime un enregistrement, il semble que son emplacement est réutilisé la prochaine fois que je crée un nouveau record. Étant donné que chaque enregistrement a une clé primaire séquentielle, l'enregistrement suivant aura une nouvelle clé dire 5, mais le nouveau dossier sera placé au dernier rang vidées, dire où nombre record 2 était. Est-il possible d'avoir de nouveaux enregistrements ajoutés directement au bas de la liste? Est-il possible de le faire peut-être le navigateur avec MySQL Query?

Ceci est un exemple de ce que je décris:

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

lorsque l'enregistrement # 2 est parti, la prochaine fois que je fais un nouvel add, record # 5 prend place numéro 2:

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

Y at-il une méthode recommandée pour instruire MySQL (peut-être à la création de la table) que les nouveaux enregistrements ne devraient être ajoutés au bas de la liste? donc, nous voudrions désactiver l'enregistrement automatique réutilisation.

Merci d'avance pour votre aide Sincères salutations

Était-ce utile?

La solution

Ajoutez simplement

ORDER BY id

à la fin de la requête (où "id" est le 1, 2, 3, 4, 5 colonne de la table)

Autres conseils

Vous pouvez créer un « insert sur » déclencheur qui utilise une séquence pour définir l'ID (l'écriture de la mémoire selon Oracle, de sorte que vous devrez vérifier si elle est différente de 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 se chargera pour vous à un certain niveau. Toutes les tables InnoDB ont une certaine forme de clé primaire qui est ordonnée et ce sont généralement configuré pour manipuler des inserts de manière séquentielle.

Si vous empêché d'utiliser InnoDB, je crois que vous devrez recourir à modifier le code source pour adapter le fonctionnement MyISAM. Je ne suis pas particulièrement familier avec tout autre moteur de stockage « normal » pour MySQL, donc je ne sais pas s'il y a une autre alternative.

création de champ date (DATE_ADDED) et ORDER BY DATE_ADDED serait mieux

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top