MySQL 5.7, 8.0.12 en ouder
MySQL vanaf 5.7 of 8.0.12 ondersteunt het gebruik van een functie of expressie als standaardwaarde van een kolom niet.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
Het alternatief zou zijn om een trigger te gebruiken om de BEFORE INSERT
van de gewenste tafel.
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 ;
Dit verandert de standaardwaarde van een INSERT
statement naar de uuid()
waarde, tenzij deze expliciet is gedefinieerd.
MySQL 8.0.13 en nieuwer
Met de release van MySQL 8.0.13 een uitdrukking kan nu als standaardwaarde worden gebruikt, op voorwaarde dat deze tussen haakjes staat.
Voorbeeld db<>fiddle
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html