sql >> Databasteknik >  >> RDS >> Mysql

byta namn på ett låst bord

Medan Rick i allmänhet har rätt att använda Percona-verktygen (se 1 och 2 ), är svaret på frågan egentligen att använda ALTER TABLE . Jag tänkte RENAME var bara ett alias - men det verkar som att så inte är fallet .

Testet verkar indikera att detta fungerar OK:

CREATE TABLE foo_new (...)

-- copy data to new table, might take very long
INSERT INTO foo_new (id,created_at,modified_at)
  SELECT * FROM foo WHERE id <= 3;

LOCK TABLES foo WRITE, foo_new WRITE;

-- quickly copy the tiny rest over
INSERT INTO foo_new (id,created_at,modified_at)
  SELECT * FROM foo WHERE id > 3;

-- now switch to the new table
ALTER TABLE foo RENAME TO foo_old;
ALTER TABLE foo_new RENAME TO foo;

UNLOCK TABLES;


  1. Dela upp kolumnsträngen i flera kolumnsträngar

  2. hur kan jag säkerhetskopiera och återställa datum från mysql-databas

  3. SQL Server ALL Operatör förklaras

  4. MySQL dela upp kommaseparerad sträng i temperaturtabell