Несколько замечаний:
Это избавляет от одного из ALTERs:
ALTER TABLE myTable ADD COLUMN basePrice FLOAT(10,2) NOT NULL DEFAULT '0';
UPDATE myTable set basePrice = 0,9 * price;
MySQL 8.0 может добавлять столбцы практически мгновенно. (Там все равно должен быть UPDATE
.
pt-online-schema-change
может выполнить задачу практически с нулевым временем блокировки.
UPDATE
может (должен) быть сделан кусками, скажем, 1000 строк. Каждый кусок будет отдельной транзакцией. Это минимизирует блокировки во время обновления. Больше обсуждения здесь .
(И я полностью согласен со Strawberry в использовании DECIMAL(8,2)
(или любого другого размера) для денег.)
MySQL 5.7 может иметь «сгенерированный» столбец, но я подозреваю, что он ничего не купит, так как вы ожидаете изменить формулу позже.