6
votes

Plus d'incrément automatique dans MySQL

J'utilise php et mysql. J'ai une table avec la colonne ID définie sur Auto Incrément comme clé primaire. J'essaie d'ajouter une autre colonne appelée Sort_order. La colonne Sort_Order doit incrémenter automatiquement lorsque la ligne est insérée. Ensuite, un utilisateur sera en mesure de modifier la valeur Sort_Order. Mais MySQL n'autorise pas l'incrément automatique pour plus d'une colonne?

Quel est le meilleur moyen d'incrémenter automatiquement la valeur Sort_Order?

par demande populaire, une autre explication.

Dans la zone d'administration, l'utilisateur aura une liste de catégories. En utilisant JavaScript, l'utilisateur peut faire glisser la commande, ils veulent les catégories dans. Le script publie ensuite une liste de tous les identifiants dans la nouvelle commande et les valeurs de tri_order dans l'ancienne commande.

J'ai alors une fonction PHP qui met à jour MySQL avec la nouvelle valeur SORT_Order.

Tout cela est déjà fait, sauf que j'avais manuellement rempli toutes les valeurs Sort_Order. Je veux que cela puisse avoir une valeur lorsqu'un utilisateur crée une nouvelle catégorie.

Ensuite, je peux utiliser le tri_order pour afficher correctement la commande de catégorie à l'extrémité avant.

J'ai déjà tout fait. Mais dans le développement, je me suis rempli manuellement dans les valeurs du Sort_Order.


3 commentaires

Pouvez-vous nous en dire un peu plus sur la façon dont vous allez utiliser la colonne Sort_Order ?


Qu'est-ce que vous avez besoin exactement de la deuxième colonne Auto_Increment? Je ne comprends pas le raisonnement derrière cela.


Si vous pouvez détailler sur l'utilisation, nous pouvons vous suggérer une meilleure alternative.


5 Réponses :


-2
votes

1 commentaires

Le lien n'est plus disponible. La descendez.



1
votes

Vous pouvez utiliser un Trigger pour mettre à jour votre ligne sur Insérez ou choisissez une valeur appropriée dans votre code PHP au moment où la requête est produite.

Toutefois, vous devez déterminer si vous devez vraiment créer une valeur de tri_-incrémentation automatique. Dans votre code d'affichage, vous pouvez trier les éléments qui ont reçu un ordre de tri explicite et placent les éléments non formés restants à l'endroit approprié (en bas?) Dans la liste.


0 commentaires

7
votes

Vous pouvez laisser votre colonne Sort égale à NULL par défaut. La seule chose dont vous avez besoin est une petite requête plus intelligente. Par exemple: xxx


0 commentaires

0
votes

Vous pouvez stocker 0 en tri_order, puis trier par trier_order + id . Les résultats seront identiques parce que sort_order sera exact 0 au lieu de ID (moins sur ID )


0 commentaires

1
votes

Ajouter peut-être un horodatage et trier ce qui ajoute un sens à votre modèle de données. Une colonne «Sort_Order» signifie que vous mettez la présentation (vue) la logique dans votre modèle de données, qui est une mauvaise chose.


1 commentaires

Dépend de l'utilisation réelle, mais parfois un ordre de tri fait partie du modèle de données imo. Considérez une galerie. Oui, l'ordre de tri est lié à la présentation, mais cela fait également partie du modèle car l'ordre de présentation est à la fois arbitraire et important pour la galerie dans son ensemble. Vous ne pouvez pas simplement aller avec la clé primaire ou un horodatage, car ces valeurs sont censées être statiques. Dans cette circonstance, une clé de tri a parfaitement logique.