MySQL valeur par défaut comme d'autres de valeur du champ
Puis-je et, si je peux, comment puis-je définir la valeur par défaut d'un champ dans une table MySQL pour la valeur d'un autre champ?
Chose, c'est: j'ai des données, et chaque objet a son ID dans la table. Mais, je voudrais que la possibilité de réorganiser les données, la modification de leur tri des index, sans altérer leur IDENTITÉ. Ainsi, le champ sort_num
devrait par défaut être mis à la valeur donnée à l'auto-incrémenté champ indexé ID
.
Merci d'avance!
Double Possible de mysql définir le champ valeur par défaut à d'autres de la colonne
OriginalL'auteur arik | 2011-06-16
Vous devez vous connecter pour publier un commentaire.
Je vois deux solutions possibles pour cela:
1. Possibilité:
Vous utilisez une fonction de simplement ignorer
sort_num
si elle n'est pas définie:coalesce()
renvoie la première valeur non nulle, de sorte que vous pouvez insérer des valeurs poursort_num
si vous avez vraiment besoin de changer l'ordre des éléments.2. Possibilité:
Vous écrire un déclencheur, qui définit automatiquement la valeur si elle n'est pas définie dans l'instruction insert:
(inspiré par ce commentaire)
Toutefois, cela pourrait aller dans la parallélisation des questions (plusieurs requêtes de l'insertion, dans le même temps)
OriginalL'auteur Dan Soap
Ses une mauvaise idée d'avoir un auto-incrémentée réarrangés, par conséquent, une meilleure idée serait
Ajouter une colonne sort_num à la table
Maintenant jouer avec sort_num colonne comme il n'a pas d'effet sur la colonne ID
Eh bien, vous pourriez utiliser la méthode proposée ci-dessus ou de traiter avec ce côté serveur. Comme faire insérer, se last_insert_key et ensuite mettre à jour le tableau de l'ensemble de données sort_num = id où id = last_insert_key
OriginalL'auteur Adithya Surampudi