web-dev-qa-db-fra.com

Un moyen sûr de trouver le dernier identifiant inséré dans une table?

Est-il prudent d’utiliser $wpdb->insert_id; pour trouver la id d’une dernière mise à jour row id juste après une mise à jour? ex:

 $sql = $wpdb->insert($table_name, $arrayWithDataToInsert, array('%s','%s'));
            $results['new_created_id'] = $wpdb->insert_id;

ou est-ce que je rencontre la possibilité d'attraper l'identifiant d'une autre ligne insérée immédiatement après le mien?

Merci!

2
Regis Zaleman

À un niveau supérieur, il n'y a vraiment aucun moyen de savoir si le connecteur php/db retournera le bon identifiant en s'appuyant sur $ wpdb-> insert_id. Le seul moyen d'être sûr à 100% est d'ajouter une clé unique (et indexée en tant que telle); vous pouvez ensuite récupérer l'ID en interrogeant la table sur cette clé unique.

La raison pour laquelle j’écris ceci est si une fonction de déclenchement ajoute des lignes à partir de la base de données, ou plus important encore, si un plug-in se raccorde à wpdb de telle sorte qu’il dérange avec des insertions à côté de celui que vous êtes en train de créer (par exemple pour la journalisation) , tu n'es pas en sécurité.

Dans cet esprit, pratiquement tous les membres de la communauté [WP] (et la plupart des autres communautés, d'ailleurs) ont la moindre idée de ce qu'un DB peut faire et traitent la chose comme s'il s'agissait d'un ensemble d'énormes matrices. . Donc, vous êtes très sûr de compter dessus dans la pratique.

4
Denis de Bernardy