Modifier l'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 : Modifier l'auto-increment

Re: Modifier l'auto-increment

par Invité » 04 nov. 2010, 15:07

Il existe une possibilite manuelle de modifier cette valeur:
Soit la table utilisateur avec les colones num(autoincrementer) , 'nom' et 'mot de passe' dans la base de donnees france. En exportant la table avec phpMyAdmin sous forme de code sql on obtient quelquechose semblable au suivant :

-- phpMyAdmin SQL Dump
-- version 3.1.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Nov 04, 2010 at 01:58
-- Server version: 5.1.30
-- PHP Version: 5.2.8

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `france`
--

-- --------------------------------------------------------

--
-- Table structure for table `utilisateur`
--

CREATE TABLE IF NOT EXISTS `utilisateur` (
`num` int(2) NOT NULL AUTO_INCREMENT ,
`nom` varchar(2) ,
`nom` varchar(30) NOT NULL COMMENT 'nom de l''utilisateur',
`motdepasse` int(30) NOT NULL COMMENT 'mot de passe l''utilisateur',
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `utilisateur`
--

INSERT INTO `utilisateur` (`num`, `nom`, `prenom`, `mdp`) VALUES
(1, 'lol', 0, ''),
(2, 'lol', 0, ''),
(3, 'lol', 0, ''),
(4, 'lol', 0, '');

On a 4 tuples pour la commande INSERT => On avais 4 enregistrements dans la table
Si recupere ceci dans un fichier d'extension .sql alors en modifiant la ligne AUTO_INCREMENT=5 a une valeur souhaiter , on peut supprimer la dite table avec phpMyAdmin et importer le fichier sql sauvegarder en dessus.
Ca fait que l'auto_increment a changer mais les donnees n'ont pas ete modifier.
Sinon en dehors de cette methode , Il n'existe aucun moyen de faire cette transaction sans refaire la table tout en conservant ses donnees.

par Cyrano » 20 nov. 2005, 15:29

Ce n'est pas possible et c'est en plus une très mauvaise idée.

Une clé primaire auto-incrémentée ne devrait pas servir à autre chose qu'établir les liens avec les données d'autres tables: si tu modifies manuellement cet identifiant, certains liens de référence seront rompus et tu auras des données incomplètes d'un coté et des données orphelines de l'autre.

Si tu veux gérer un numéro lors de l'affichage, il est de très loin préférable de le faire par programmation dans une boucle.

La seule manière de remettre la valeur courante de l'auto-incrément à zéro consiste à vider la table complètement (TRUNCATE TABLE nom_table) et là, tu remets à zéro, mais tu perds tout ce qui restait aussi.

Modifier l'auto-increment

par geliz » 20 nov. 2005, 15:24

Bonjour à tous
Suite à des essais sur ma table et à des suppressions d'enregistrement, mon id auto incrément commence à 10 au lieu de 1. Est -il possible, avec phpmyadmin, de remettre sa valeur initiale à 1, car je souhaiterais me servir de l'id pour afficher les numeros de mes enregistrements.
Merci
Géliz