Как выполняется миграция столбца переименования? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть вопрос о том, как правильно выполнить миграцию базы данных, в частности столбец переименования.

Предположим, что в таблице есть столбец A, и я хочу переименовать его в B. Если я переименую и разверну код, который ссылается на B, после выполнения миграции и перед развертыванием кода у меня будут ошибкипотому что код не будет соответствовать схеме.С другой стороны, если я сначала разверну код, у меня также будут ошибки, поскольку код будет ссылаться на столбец B, пока не будет выполнена миграция.

Поэтому я подумал, что перед развертыванием кода лучше всего создать новый столбец B с данными A, а затем развернуть.Сначала я думал, что это будет хорошо, но потом я понял, что новые данные можно вставить в таблицу после создания столбца B с данными A. Итак, каков стандартный способ сделать это?

Заранее спасибо.

1 Ответ

0 голосов
/ 11 июня 2019

Если вы хотите сделать это без простоя, вы можете попробовать это:

1) Add your new column B
2) Add a trigger that updates Column B every time Column A is updated, 
   and Column B every time Column A is updated. 
   Note that RECURSIVE_TRIGGERS must be set to OFF
2a) If you want to you could add a second column CodeVersion which can help identify 
    what version of the code was used, and which direction to copy data in the trigger,
    and avoid any issues with recursion
3) Copy all the data from Column A to Column B
4) At your leasure, upgrade the code. You could do this over a period of time
5) Once everyone is on the new version, remove the trigger and the old column
...