Mysql
 sql >> база данни >  >> RDS >> Mysql

ALTER TABLE без да заключвате масата?

Единствената друга опция е да направите ръчно това, което много RDBMS системи правят така или иначе...
- Създайте нова таблица

След това можете да копирате съдържанието на старата таблица върху парче по парче. Въпреки че винаги внимавате за всяко INSERT/UPDATE/DELETE в таблицата с източник. (Може да се управлява от спусък. Въпреки че това би причинило забавяне, това не е заключване...)

След като приключите, променете името на изходната таблица, след което променете името на новата таблица. За предпочитане в транзакция.

След като приключите, прекомпилирайте всички съхранени процедури и т.н., които използват тази таблица. Плановете за изпълнение вероятно вече няма да са валидни.

РЕДАКТИРАНЕ:

Бяха направени някои коментари, че това ограничение е малко лошо. Така че реших да поставя нова гледна точка върху него, за да покажа защо е така...

  • Добавянето на ново поле е като промяна на едно поле на всеки ред.
  • Заключването на полето би било много по-трудно от заключването на редове, без значение заключването на таблицата.

  • Всъщност променяте физическата структура на диска, всеки запис се движи.
  • Това наистина е като АКТУАЛИЗИРАНЕ на цялата таблица, но с по-голямо въздействие...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да ЗАРЕДИМ ДАННИ INFILE в mysql, като първото col е автоматично увеличение?

  2. Проблем с инсталацията на Ruby on Rails - Как да използвам WAMP MySQL инсталация?

  3. Какво е PyMySQL и как се различава от MySQLdb? Може ли да повлияе на внедряването на Django?

  4. Как да съхранявате данните в unicode на хинди език

  5. WAMP сървърът е в зелено, но получавате само 404