MySQL 5.7, 8.0.12 et versions antérieures
MySQL à partir de 5.7 ou 8.0.12 ne prend pas en charge l'utilisation d'une fonction ou d'une expression comme valeur par défaut d'une colonne.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
L'alternative serait d'utiliser un déclencheur pour surveiller le BEFORE INSERT
du tableau souhaité.
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 ;
Cela changera la valeur par défaut d'un INSERT
déclaration à uuid()
valeur, sauf si elle a été explicitement définie.
MySQL 8.0.13 et versions ultérieures
Avec le version de MySQL 8.0.13 une expression peut désormais être utilisée comme valeur par défaut, à condition qu'elle soit entre parenthèses.
Exemple db<>violon
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html