sql >> Databáze >  >> RDS >> Mysql

ALTER TABLE bez uzamčení stolu?

Jedinou další možností je udělat ručně to, co stejně dělá mnoho systémů RDBMS...
- Vytvořit novou tabulku

Poté můžete zkopírovat obsah staré tabulky po částech. Vždy si dávejte pozor na jakékoli INSERT/UPDATE/DELETE ve zdrojové tabulce. (Mohlo by být řízeno spouštěčem. Ačkoli by to způsobilo zpomalení, není to zámek...)

Po dokončení změňte název zdrojové tabulky a poté změňte název nové tabulky. Nejlépe v transakci.

Po dokončení znovu zkompilujte všechny uložené procedury atd., které tuto tabulku používají. Prováděcí plány pravděpodobně již nebudou platné.

UPRAVIT:

Bylo učiněno několik poznámek o tom, že toto omezení je trochu špatné. Tak jsem si řekl, že na to dám nový pohled, abych ukázal, proč to tak je...

  • Přidání nového pole je jako změna jednoho pole na každém řádku.
  • Zámky pole by byly mnohem těžší než zámky řady, nehledě na zámky stolu.

  • Ve skutečnosti měníte fyzickou strukturu na disku, každý záznam se pohybuje.
  • Toto je skutečně jako AKTUALIZACE celé tabulky, ale s větším dopadem...


  1. server WAMP. Velmi velký datový adresář v MySQL?

  2. Náhodně odebraná postgres výchozí oprávnění superuživatele - mohu je získat zpět?

  3. Nelze načíst třídu ovladače JDBC [com.mysql.jdbc.Driver]

  4. Vybrat možnosti z DB v závislosti na dalších možnostech výběru