MySQL 5.7, 8.0.12 и по-стари версии
MySQL от 5.7 или 8.0.12 не поддържа използването на функция или израз като стойност по подразбиране на колона.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
Алтернативата би била да се използва тригер за наблюдение на BEFORE INSERT
от желаната таблица.
DELIMITER ;;
CREATE TRIGGER `foo_before_insert`
BEFORE INSERT ON `foo` FOR EACH ROW
BEGIN
IF new.id IS NULL THEN
SET new.id = uuid();
END IF;
END;;
DELIMITER ;
Това ще промени стойността по подразбиране на INSERT
израз към uuid()
стойност, освен ако не е изрично дефинирана.
MySQL 8.0.13 и по-нова версия
С издание на MySQL 8.0.13 израз вече може да се използва като стойност по подразбиране, при условие че е ограден в скоби.
Пример db<>fiddle
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html