MySQL 5.7, 8.0.12 och äldre
MySQL från 5.7 eller 8.0.12 stöder inte användning av en funktion eller ett uttryck som standardvärde för en kolumn.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
Alternativet skulle vara att använda en trigger för att övervaka BEFORE INSERT
av önskat bord.
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 ;
Detta kommer att ändra standardvärdet för en INSERT
uttalande till uuid()
värde, såvida det inte har definierats uttryckligen.
MySQL 8.0.13 och nyare
Med release av MySQL 8.0.13 ett uttryck kan nu användas som standardvärde, förutsatt att det är omgivet av parentes.
Exempel db<>fiol
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html