Mysql
 sql >> Database >  >> RDS >> Mysql

Rinominare una tabella InnoDB senza aggiornare i riferimenti di chiave esterna ad essa?

Vecchie domande, ma seguire è un possibile modo per aggirare. Fondamentalmente sposta i dati piuttosto che rinominare le tabelle. Ovviamente devi assicurarti che i nuovi dati rispettino le regole della chiave esterna.

SET foreign_key_checks = 0;
CREATE TABLE IF NOT EXISTS foo_old LIKE foo;
INSERT INTO foo_old SELECT * FROM foo;
TRUNCATE foo;
INSERT INTO foo SELECT * FROM foo_new;

Assicurati di eseguirlo come una query in modo che Foreign_key_checks si applichi a tutto. Spero che questo aiuti.