J'ai une table SQLite Je dois garder une trace de la commande à l'aide d'une colonne personnalisée Disons que je veux déplacer est-il possible d'atteindre ce en utilisant SQLite? P> P> personnes code>: ordre_index code>. La colonne ordre_index code> doit démarrer sur 0 code>. P> Muhammed code> pour positionner 1 code>. Cela me demande de mettre à jour le ordre_index code> de Sammy code> et Paul code> aussi. Le ordre_index code> de caren code> n'a pas besoin de changer, car 1> 0 code>. P>
3 Réponses :
Ce n'est pas une réponse complète, car votre modèle de données complète peut être modifié, mais je gérerais cette exigence spécifique avec la requête suivante: c'est-à-dire, juste bumb position à un moins la priorité absolue actuelle. Ensuite, votre logique d'entreprise devrait toujours servir à la personne avec le plus petit indice d'ordre (ce qui pourrait même devenir négatif). P> p>
Cette exigence est délicate car elle implique plusieurs mises à jour qui dépendent de l'autre et que l'ordre de ces mises à jour n'est pas garanti.
Mise à jour d'abord toutes les autres lignes qui doivent être mises à jour sauf la rangée de la personne qui Vous voulez déplacer: p> mettre à jour la ligne de la personne que vous souhaitez déplacer: p> remplacer < code>? code> Installations dans les deux requêtes avec la nouvelle position.
Voir le Démo . P> P>
J'ai créé une solution ( Démo ) basé sur Tim's et FORPAS's Suggestions: Je pense que cette solution est un peu plus facile à saisir que la suggestion de Forpas. Cependant, y a-t-il des raisons d'utiliser la suggestion de Forpas à la place? P> p>
Considérez-vous cela une solution? Que ferez-vous si vous voulez déménager Caren de 0 à 3? Allez-vous écrire 4 nouvelles requêtes de mise à jour? Et que s'il y a 10 ou 100 rangées dans la table?
Bons points! Je n'avais pas cependant de ces situations. Et je voulais faire référence à votre solution (FORPAS). Je vais l'accepter tout de suite!