MySQL - объединить существующие поля в новом сгенерированном поле

0

В моей таблице у меня есть два поля: book и reference. Ни один из них не должен быть уникальным по своему усмотрению. Однако конкатенированное значение этих двух значений должно быть уникальным.

Я пытаюсь создать созданный столбец, который объединяет два, но я получаю следующее сообщение об ошибке при запуске 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'

Изображение 174551

  • 0
    Какая у вас версия MySQL?
  • 0
    Вы используете MySQL 5.7 или новее? Вот когда сгенерированные столбцы были добавлены.
Показать ещё 4 комментария
Теги:
database

2 ответа

1
Лучший ответ

Вы можете достичь этой цели, просто применяя ограничение UNIQUE-ключа для обоих этих столбцов, и оно станет составным ключом, чтобы вы могли хранить уникальные значения в паре этих двух столбцов. Вы можете попробовать выполнить инструкцию SQL:

ALTER TABLE bibleverses.myverses ADD UNIQUE(book, reference);

0

Сначала выполните таблицу alter, чтобы добавить новый столбец, после чего вы запустите обновление, чтобы заполнить fild, например:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню