J'ai une table qui reçoit des entrées d'un site Web, et comme ces entrées vont dans la base de données, elles doivent être assignées à la catégorie suivante sur une liste de catégories qui peuvent être changées à tout moment.Comment affecter une catégorie tournante aux entrées de la base de données dans l'ordre dans lequel les enregistrements sont entrés?
En raison de cette raison, je ne peux pas faire quelque chose de simple comme pour cartographier la première catégorie de 5 à ID 1, 6, 11, 16.
J'ai pris en compte dans la lecture de la liste des catégories actuellement peut-être, et en vérifiant la valeur du dernier inséré, puis en donnant au nouvel enregistrement la catégorie suivante, mais j'imagine que si deux demandes arrivent au même moment, je pourrais potentiellement leur attribuer à la fois la même catégorie plutôt que la séquence.
Alors, mon tour de la pensée actuelle est la suivante:
- verrouiller les tables (catégories et enregistrements)
- insérer la nouvelle ligne dans les dossiers
- obtenir l'ID de la nouvelle ligne
- select la rangée précédente à l'insertl (en utilisant par ordre décroissant auto_inc_name 0, 1)
- prendre la catégorie de la ligne précédente, et de saisir le suivant dans la liste de chat
- mise à jour de la nouvelle ligne insérée
- déverrouiller la table
Je ne suis pas 100% sûr que cela fonctionnera bien, et il y a peut-être une façon de le faire beaucoup plus facile, donc je demande:
A. Est-ce que cela fonctionnera comme je l'ai décrit dans le problème original? B. Avez-vous une meilleure façon de le faire?
Merci ~
Okay donc ...deux formulaires Web entrent en jeu, ils interrogent tous les deux cette table et obtiennent la même réponse pour "la dernière catégorie assignée" et sa cassée. Je suppose que je peux encore juste bloquer les tables, mais c'est presque le même processus étant donné que je devrais rechercher les catégories à chaque fois - vous me sauvez l'étape de trouver la valeur du dernier record en introduisant une autre table. – Stomped
Si vous êtes si inquiet au sujet des soumissions simultanées, vous pouvez faire exécuter la procédure entière en tant que procédure stockée; il veillera à ce qu'une transaction n'ait pas lieu avant que la précédente soit entièrement terminée. Aussi, vous avez raison d'avoir oublié le bit "changé à tout moment"; si c'est ce fluide, demandez-lui le nombre de catégories chaque fois qu'il met à jour pour s'assurer qu'il est incrémenté à une catégorie valide. – eykanal