auto increment

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : auto increment

par zeus » 15 janv. 2007, 15:41

Certes, ce n'est pas interdit ...

Maintenant, s'il se trouve que toutes les lignes de facturations pointent sur cet identifiant, il faut bien penser que ces lignes ne sont intègrent pendant la modification.

Pour enfoncer le clou, ce n'est pas interdit de ne pas mettre en place un système de détection des erreurs (au minimum un or die() ) pourtant, on est tous d'accord sur son utilité ;)

par Ryle » 15 janv. 2007, 15:30

Bon, faut pas pousser non plus, c'est pas interdit ou tabou de bricoler ton auto-increment (si c'était le cas, ils n'auraient pas offert la possibilité de le modifier dans le alter, c'est donc bien que ça sert, nottament pour synchroniser des tables), c'est juste que c'est assez dangereux pour un administrateur inexpérimenté.

Comme cela a été dit, l'intérêt de cette fonction est de te garantir l'unicité des valeurs que tu vas trouver. Elle a été testé, blindé, kevlardé, elle resiste même aux explosions nucléaires (si si, mais comme le pc et le disque dur eux ne les supportent pas, on peut pas le vérifier... ;)). Bref, mettre les doigts dedans signifie que son fonctionnement ne te convient pas, et dès lors l'intégrité des données ne sera garanti que par tes soins (au fait, tu résistes aux bombes atomiques ? ;))

Et dès lors où son fonctionnement ne correspond pas à ce que tu attends, la question à se poser c'est "faut-il utiliser cette fonction ?". Elle est parfaite pour un identifiant, elle l'est beaucoup moins pour une valeur susceptible de changer. (Et utiliser une valeur susceptible de changer comme id est une très mauvaise idée : il va falloir la retrouver et la modifier dans toutes les tables ou elle est susceptible d'être utilisée, chose que tu ne pourras plus faire lorsque mysql gèrera correctement les fk)

par zeus » 15 janv. 2007, 15:22

Effectivement, un intervenant professionnel qui avait à faire tout les jours à des cas pratique.
En 5 interventions de 2 heures, j'en ai appris pas mal ;)

par iclo » 15 janv. 2007, 15:21

Une fois, un prof m'a dit que personne ormis la base de données ne doit voir l'identifiant.
Un sage, ton professeur =D> =D>

par zeus » 15 janv. 2007, 15:19

La contre-raison est simple : nul n'est infaillible.

1/ c'est très simple de ne pas penser à tous ;)
2/ Tu y penses aujourd'hui, mais lors de la prochaine évolution ?
3/ Il existe une manière de faire autrement sans prendre de risque, donc ...

par guy » 15 janv. 2007, 15:18

Desolé j'ai oublie de me loguer . Par contre je me demande pourquoi il serait interdit et tabou de modifier l'auto-increment ? En prenant quelques precaution et en sachant les repercutions possible cela peut se faire sans danger je pense.

Guy

par zeus » 15 janv. 2007, 15:17

Donc, tu n'as pas compris l'intérêt de l'auto-increment.

C'est juste une valeur qui permet d'identifier de manière unique une ligne en base de données.

Dans le cas des factures, comme le numéro d'une facture peut être modifié, il est primordiale que le numéro de la facture soit séparé de l'identifiant de la ligne.

Une fois, un prof m'a dit que personne ormis la base de données ne doit voir l'identifiant. Cela permet d'éviter ce genre d'erreur de conception toutefois basique. ;)

par Invité » 15 janv. 2007, 15:14

dans mon cas l'auto-increment est le numero des facture (dans factux http://www.factux.org ) don je suis le devellopeur.
Pour des raison legales ou pratique il est necessaire de parfois changer le num des factures donc ici de l'auto-increment de la table facture.

Guy

par iclo » 15 janv. 2007, 14:09

Plus le temps passe, moins j'arrive à comprendre pourquoi des dévellopeurs veulent modifier cet auto-incrément ? C'est boite noire, le serveur garantit qu'il est unique et c'est tout ce qui nous intéresse. :lol:

par Truc » 15 janv. 2007, 13:47

moi je ne desire pas effacer les enregistrement vide mais juste recuperer et modifier la valeur de l'auto-increment.
Peu importe... On ne touche JAMAIS à cette valeur !

par guy » 15 janv. 2007, 13:16

moi je ne desire pas effacer les enregistrement vide mais juste recuperer et modifier la valeur de l'auto-increment.
j'ai pondu ceci:
$sql = "SHOW TABLE STATUS LIKE '" . $tblpref ."facture'";
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					$data = mysql_fetch_array($req);

 echo"$data[Auto_increment]"; 
pour recupere l'auto-increment et
$sql="alter table " . $tblpref ."facture AUTO_INCREMENT=$auto_icre";
	mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
apres avoir bien sur verifie que le nouveau auto-increment est superieur a l'ancien.
Ca marche mais j'espere que ca vas marcher dans tout les cas quel que soit le serveur et la version de mysql.


Guy

par zeus » 15 janv. 2007, 12:49

Si je puis me permettre, regarde bien toute la discussion.

Il y a un passage sur les dangers associées à changer un auto-increment ;)

par Ajoloca » 15 janv. 2007, 12:33

Bonjour,

Regarde ce sujet

auto increment

par guy » 15 janv. 2007, 12:28

Bonjour
je cherche (en php pas via phpmyadmin) a recuperer la valeur de l'auto-increment d''une table et aussi la formule magique pour changer cet auto-increment!

Merci

Guy