MySQL 5.7, 8.0.12 a starší
MySQL od verze 5.7 nebo 8.0.12 nepodporuje použití funkce nebo výrazu jako výchozí hodnoty sloupce.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
Alternativou by bylo použití spouštěče ke sledování BEFORE INSERT
požadované tabulky.
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 ;
Tím se změní výchozí hodnota INSERT
příkaz k uuid()
hodnota, pokud nebyla výslovně definována.
MySQL 8.0.13 a novější
S vydání MySQL 8.0.13 výraz lze nyní použít jako výchozí hodnotu za předpokladu, že je uzavřen v závorkách.
Příklad db<>fiddle
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html