2011-12-16 5 views
1

J'ai une table d'environ 30 lignes. Je dois insérer une nouvelle rangée spécifiquement dans la 3ème rangée. J'ai essayé de lui donner manuellement une valeur 'id', en espérant que l'auto-incrément se chargerait du reste, mais il me donne une erreur 'duplicate entry' pour la clé primaire.Insérer une nouvelle ligne dans un emplacement spécifique dans MySQL

Y a-t-il un moyen de contourner ce problème? C'est une solution unique, donc je n'ai pas besoin d'une solution 'flexible' ou quoi que ce soit.

Merci!

Répondre

4

exécuter cette mise à jour avant d'insérer la ligne avec id = 3:

update your_table set id=id+1 where id >= 3; 
+0

Je voudrais ajouter une petite spécification: si le champ ID est PRIMARY KEY, avec votre commande vous recevez un message d'erreur (Duplicate Entry). Mais si vous modifiez l'ordre dans lequel les enregistrements sont traités (celui avec une valeur d'ID supérieure à la valeur avec un ID inférieur), votre commande n'échoue pas. UPDATE your_table SET id = id + 1 O WH id> 3 ORDER BY DESC est meilleur. – rfellons

0

Vous pouvez supprimer tous les enregistrements et les réinsérer dans l'ordre que vous voulez, mais cela ne signifie pas nécessairement que vous retournerez les dans le bon ordre.

Si vous avez besoin de vos résultats dans un certain ordre, utilisez la clause order by de votre SQL.

Pourquoi auriez-vous besoin d'un enregistrement placé dans la table dans un certain ordre?

Questions connexes