'MySQL - Concatenate Existing Fields in New Generated Field

In my table, I have two fields: book and reference. Neither are required to be unique on their own. However, the concatenated value of these two values must be unique.

I'm trying to create a generated column that concatenates the two, but I'm receiving the following error message when running the SQL:

Executing:
ALTER TABLE `bibleverses`.`myverses` 
ADD COLUMN `fullref` VARCHAR(20) GENERATED ALWAYS AS (CONCAT(book, reference)) STORED AFTER `mp3`;

    Operation failed: There was an error while applying the SQL script to the database.
    ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GENERATED ALWAYS AS (CONCAT(book, reference)) STORED AFTER `mp3`' at line 2
    SQL Statement:
    ALTER TABLE `bibleverses`.`myverses` 
    ADD COLUMN `fullref` VARCHAR(20) GENERATED ALWAYS AS (CONCAT(book, reference)) STORED AFTER `mp3`

Here is a screenshot of my current settings.



Solution 1:[1]

First execute an alter table to add your new column, then you run an update to fill out the fild, like:

ALTER TABLE <table_name> ADD COLUMN <column name, type, definition, etc>;
UPDATE TABLE <table_name> SET <field> = <value>;

Solution 2:[2]

To create a virtual generated column (which updates if the constituents changes)

ALTER TABLE producerADD COLUMNFullName varchar(32) as (CONCAT(FirstName,' ',Surname));

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Francisco de Castro
Solution 2 Gideon Van