Domanda

Ho appena riuscito a migrare un abbastanza grande database da SQL Server a MySQL. Non ho impostare i tasti principali per incremento automatico durante la migrazione perché le tabelle hanno rapporti sulla base di ids come chiavi primarie, che sono le chiavi esterne in un'altra tabella.

Ora per l'aggiunta di nuovi record che voglio modificare la chiave primaria 'id' colonne in tutte le tabelle di essere auto-incremento, ma a partire dall'ultimo numero più alto nella colonna id in ogni tabella.

Qual è il modo migliore per farlo senza perdere i rapporti che ho già?

UPDATE: Cercando di aggiungere autoincrement mi dà questo errore:

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
È stato utile?

Soluzione

Basta aggiungere l'auto-incremento sulle colonne necessarie. Non influenzerà righe esistenti. Si inizierà con il prossimo valore disponibile.

Si noti che una colonna di essere mezzo di auto-incremento solo che se non si assegna un valore a uno verrà aggiunto da MySQL. Se si desidera fornire valori espliciti si può fare così, senza nulla di speciale accade. Così si potrebbe aver impostato queste colonne a destra di incremento automatico fin dall'inizio.

Una colonna con incremento automatico non può avere un valore predefinito esplicito.

Testato

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top