MySQL 5.7, 8.0.12 i starsze
MySQL w wersji 5.7 lub 8.0.12 nie obsługuje używania funkcji lub wyrażenia jako domyślnej wartości kolumny.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
Alternatywą byłoby użycie wyzwalacza do monitorowania BEFORE INSERT
żądanej tabeli.
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 ;
Zmieni to domyślną wartość INSERT
oświadczenie do uuid()
wartość, chyba że została wyraźnie zdefiniowana.
MySQL 8.0.13 i nowsze
Z wydanie MySQL 8.0.13 wyrażenie może być teraz używane jako wartość domyślna, pod warunkiem, że jest ujęte w nawiasy.
Przykład db<>skrzypce
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html