Как добавить сгенерированный MYSQL столбец с регистром

#mysql #case #virtual

#mysql #регистр #виртуальный

Вопрос:

версия mysql 5.7.25

Этот SQL возвращает ошибку 1064.

 ALTER TABLE `contract` 
    ADD `newcolumn` INT 
    AS (CASE WHEN `price`=0 THEN `column1` ELSE `column2`) 
    STORED;
 

Чтобы упростить эту ошибку, я попробовал использовать приведенный ниже SQL, но он возвращает 1064.

 ALTER TABLE `contract` 
    ADD `newcolumn` INT 
    AS (
     CASE WHEN (price=0) THEN 1 
       ELSE 2
    ) STORED 
 

Комментарии:

1. Также опубликуйте структуру таблицы SHOW CREATE TABLE contract

2. Вам не хватает END предложения попробуйте ALTER TABLE contract ADD newcolumn INT AS (CASE WHEN (price=0) THEN 1 ELSE 2 END) STORED ; , если это не сработает, попробуйте ALTER TABLE contract ADD newcolumn INT GENERATED ALWAYS AS (CASE WHEN price=0 THEN column1 ELSE column2 END) STORED;

3. КОНЕЦ сработал! Спасибо.