MySQL 5.7, 8.0.12 e anteriores
O MySQL a partir de 5.7 ou 8.0.12 não suporta o uso de uma função ou expressão como o valor padrão de uma coluna.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
A alternativa seria usar um gatilho para monitorar o
BEFORE INSERT
da mesa desejada. 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 ;
Isso mudará o valor padrão de um
INSERT
instrução para o uuid()
valor, a menos que tenha sido explicitamente definido. MySQL 8.0.13 e mais recente
Com o lançamento do MySQL 8.0.13 uma expressão agora pode ser usada como o valor padrão, desde que esteja entre parênteses.
Exemplo db<>fiddle
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html