Page 1 sur 1

Récupérer données lors d'un INSERT

Posté : 11 juil. 2006, 09:53
par Toufinet
Bonjour,

Voilà, je voulais savoir 2 choses :
1° Es-ce qu'il est possible, au même titre qu'on peut paramètrer un champ en auto-incrémentation, de paramètrer en champ en random ?
Exemple :
Je crée un champ d'entiers de longueur 4 : id
J'insert des données dans la table.
Es-ce que MySQL peut "randomiser" le champ id, en faisant attention à ce qu'il n'y ai pas de doublon ?
Il est possible de le faire en PHP, mais ça me semble un peu lourd, donc si MySQL peut s'en charger, ce serait génial !

2° Es-t'il possible de directement récupérer la valeur d'un champ après un insert ?
Exemple :
J'ai un champ id, en autoincrémentation ( ou en random, si ma question 1° a une solution :D ) ).
J'exécute une requette genre : "INSERT INTO table VALUES ( '' )"
Comment récupérer la valeur de id qui a été attribuée directement ?
Idem que pour la question 1°, c'est faisable en PHP, mais ce n'est pas suffisament fiable pour mon application.

Voilà, merci d'avance à qui saura m'aider :)

Re: Récupérer données lors d'un INSERT

Posté : 11 juil. 2006, 11:40
par ouckileou
1 - Pourquoi faire ?

2 - Oui, avec une colonne auto increment...
Avec un identifiant généré aléatoirement je ne vois pas quel moyen tu pourrais avoir de savoir que c'est la dernière ligne enregistrée, sauf avec une date...

Posté : 11 juil. 2006, 12:36
par Toufinet
Bon ok, on va abandonner le 1.
En fait le but est de créer des login. Les mettre aléatoirement aurait rajouté une chouquette de sécurité, m'enfin, pas grave.

Pour le 2° , puisque c'est possible, comment faire ?

Posté : 11 juil. 2006, 13:31
par ouckileou
Pour le 1, tu peux bien créer des logins mais garder un identifiant numérique autoincrémenté non ?

Pour le 2 :

Code : Tout sélectionner

SELECT LAST_INSERT_ID()
ou mysql_insert_id()

Cette réponse a déjà été donnée environ 200 fois sur le forum, cherche la prochaine fois :)

Posté : 12 juil. 2006, 18:43
par Toufinet


Bah oui, mais il ne faut pas qu'il existe 2 mêmes login ..
Donc soit dans un boucle je génère un login aléatoirement avec PHP, jusqu'à temps d'en trouver un qui n'existe pas déjà ( je trouve cette méthode vraiment très lourde )
Soit mysql est mon ami :) ... mais ça n'a pas l'air d'être le cas :(


Merci, désolé, je ne savais pas vraiment quoi chercher.

Posté : 13 juil. 2006, 10:16
par Henri
Pour ton problème de doublon : tu mets un index unique sur la colonne logon. Si tu tentes d'insérer un doublon, tu auras une erreur :
Tu inclues donc ton INSERT dans une boucle

Code : Tout sélectionner

REPETER générer un login aléatoirement INSERT ... lire erreur MySQL TANT QU'il y a une erreur

Posté : 13 juil. 2006, 17:21
par Toufinet
oui ok, ce sera la meilleure solution je pense.

Merci beaucoup de votre aide ;)