В MariaDB есть виртуальные столбцы, которые позволяют автоматически выполнять действия с данными других столбцов. Например, это хорошо, если вы хотите отобразить данные в разных единицах метрического измерения, просто разделив их на 10 или 1000, как показано в определении таблицы ниже:
CREATE TABLE a (
id INT NOT NULL AUTO_INCREMENT,
distance_meters INT (11),
distance_kilometers FLOAT (11,3) AS (distance_meters / 1000) VIRTUAL,
PRIMARY KEY ( id )
) ENGINE=InnoDB;
Однако как создать виртуальный столбец, который является хэшем подмножества столбцов таблицы? Например. Таблица ниже (которая не работает) предназначена для хеширования имени и зарплаты, чтобы я мог легко проверить позже, изменились ли имена или зарплаты каких-либо сотрудников, сравнив их с предыдущим хэш-списком. Мне не нужен хеш всей строки.
CREATE TABLE employees (
id INT NOT NULL,
name VARCHAR(200),
salary INT(12),
age int(3),
hash VARCHAR(AS (MD5(concat(name, salary)))) PERSISTENT,
PRIMARY KEY ( id )
) ENGINE=InnoDB;