Comment changer id dans les tableaux existants MySQL avec des données à autoincrement de dernier plus haut id?

StackOverflow https://stackoverflow.com/questions/4027954

Question

Je viens réussi à migrer une base de données assez importante de SQL Server vers MySQL. Je ne l'ai pas mis les clés primaires à incrémentation automatique lors de la migration parce que les tables ont des relations basées sur ids les clés primaires qui sont les clés étrangères dans une autre table.

pour ajouter de nouveaux disques que je veux modifier la clé primaire colonnes « id » dans toutes les tables à autoincrement mais à partir du dernier numéro le plus élevé dans la colonne id dans chaque tableau.

Quelle est la meilleure façon de le faire sans perdre les relations que je l'ai déjà?

MISE À JOUR: Essayer d'ajouter autoincrement me donne cette erreur:

ERROR 1067: Invalid default value for 'id'

SQL Statement:

ALTER TABLE `skandium`.`brands` CHANGE COLUMN `id` `id` INT(11) NOT NULL DEFAULT '0' AUTO_INCREMENT

ERROR 1050: Table 'brands' already exists

SQL Statement:

CREATE TABLE `brands` (
  `id` int(11) NOT NULL DEFAULT '0',
  `brand` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Était-ce utile?

La solution

Il suffit d'ajouter l'auto-incrément sur vos colonnes nécessaires. Il n'affectera pas les lignes existantes. Elle commencera par la prochaine valeur disponible.

Notez qu'une colonne étant des moyens d'auto-incrément juste que si vous ne donnez pas de valeur à l'un sera ajouté par MySQL. Si vous voulez fournir des valeurs explicites, vous pouvez le faire sans rien qui se passe de spécial. Donc, vous auriez pu définir ces colonnes à droite incrémentation automatique dès le départ.

Une colonne auto-incrément ne peut pas avoir une valeur par défaut explicite.

Testé

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top