J'ai la requête suivante:MySQL ON DUPLICATE KEY - dernier identifiant d'insertion?
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
Je veux que l'ID soit de l'insertion ou la mise à jour. Habituellement, j'exécute une deuxième requête afin d'obtenir ceci car je crois que insert_id() ne renvoie que l'identifiant 'inséré' et non l'identifiant mis à jour.
Existe-t-il un moyen de INSERT/UPDATE et récupérer l'ID de la ligne sans exécuter deux requêtes?
Plutôt que de supposer, pourquoi ne pas le tester vous-même? Le SQL dans l'édition ci-dessus fonctionne, et grâce à mon test est plus rapide que l'échec d'une insertion, en utilisant INSERT IGNORE, ou en sélectionnant pour voir s'il y a un doublon en premier. –
AVERTISSEMENT: La solution proposée fonctionne, mais la valeur auto_increment continue à augmenter, même s'il n'y a pas d'insertion. Si la clé dupliquée se produit souvent, vous pouvez exécuter 'alter table nom_table AUTO_INCREMENT = 0;' après la requête ci-dessus, afin d'éviter de grandes lacunes dans vos valeurs d'identifiant. –