2 votes

Comment obtenir à partir de la base de données l'identifiant d'insertion précédent avant d'insérer

Comment sélectionner le dernier id inséré d'une table de base de données

Je dois récupérer le dernier id inséré de la base de données

J'ai essayé la fonction last_insert_id() mais cela ne fonctionne pas pour moi car je veux obtenir cet id avant de faire une requête d'insertion et quand j'obtiens cet id, je fais une requête d'insertion

J'ai essayé d'utiliser max pour l'id mais cela pose un problème car si j'ai un id supprimé, il ne sera pas pris en compte

par exemple si j'ai l'id 10 supprimé, alors l'id max sera 9 mais l'auto-incrément sera 11

alors je veux avoir le nouvel id qui sera ajouté par l'auto-incrément

par exemple : j'ai un id 10 supprimé, je veux prendre ensuite le prochain id qui sera 11

2voto

ahammar Points 206

Vous pouvez :

    SÉLECTIONNER `AUTO_INCREMENT`
    DE  INFORMATION\_SCHEMA.TABLES
    WHERE TABLE\_SCHEMA = 'nom\_de\_la\_base\_de\_données'
    ET   TABLE\_NAME   = 'nom\_de\_la\_table';Et obtenir votre dernier identifiant.

1voto

G San Points 76

La valeur d'auto-incrément est générée par la base de données elle-même, lorsque l'insertion est effectuée ; ce qui signifie que vous ne pouvez pas l'obtenir avant d'exécuter la requête d'insertion réelle. insérez quelques données à moitié vides obtenez la valeur d'auto-incrément qui a été générée effectuez vos calculs en utilisant cette valeur d'auto-incrément mettez à jour la ligne pour mettre en place les nouvelles données complètes -- en utilisant l'auto-incrément généré plus tôt dans la clause where de la requête de mise à jour, pour identifier quelle ligne est mise à jour.

En pseudo-code :
début de la transaction
insérer dans votre table (valeurs à moitié vides);
$id = obtenir le dernier identifiant d'auto-incrément
effectuer des calculs
mettre à jour l'ensemble des données = données complètes où id = $id
valider la transaction

ou vous pouvez suivre Using Auto-Increment value in MYSQL Before Insert Trigger?

0voto

Vous ne pouvez pas et ne devriez pas obtenir l'identifiant inséré en dernier avant l'insertion.

Et il n'y a pas une seule raison de le faire. Insérez simplement vos données, obtenez l'identifiant réel et utilisez-le ailleurs. Aussi simple que ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X