Modifier l'auto-increment

Petit nouveau ! | 6 Messages

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

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

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.