Frage

Ich habe gerade eine ziemlich große Datenbank von SQL Server zu MySQL migrieren verwaltet. Ich habe nicht die Primärschlüssel zu Autoinkrement während der Migration festgelegt, da die Tabellen Beziehungen haben basierend auf ids als Primärschlüssel, den Fremdschlüssel in einer anderen Tabelle sind.

Jetzt für das Hinzufügen neuen Datensätze ich den Primärschlüssel ‚id‘ Spalten in allen Tabellen ändern will autoincrement sein, aber in der ID-Spalte in jeder Tabelle von der letzten höchsten Zahl beginnen.

Was ist der beste Weg, dies zu tun, ohne die Beziehungen zu verlieren, habe ich schon?

UPDATE: Der Versuch, autoincrement hinzuzufügen gibt mir diese Fehlermeldung:

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
War es hilfreich?

Lösung

Fügen Sie einfach den Autoinkrement auf Ihre benötigten Spalten. Es wird nicht vorhandene Zeilen beeinflussen. Es wird mit dem nächsten verfügbaren Wert starten.

Beachten Sie, dass eine Spalte Autoinkrement zu sein bedeutet nur, dass, wenn Sie nicht über einen Wert zuweisen wird man von MySQL hinzugefügt werden. Wenn Sie möchten, explizite Werte liefern Ihnen so ohne alles geschieht tun. So können Sie die Spalten zu Autoinkrement von Anfang an gesetzt haben könnten.

Eine Spalte mit Autoinkrement kann keinen expliziten Standardwert haben.

Getestet

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top