MySQL 5.7, 8.0.12 e precedenti
MySQL a partire dalla versione 5.7 o 8.0.12 non supporta l'utilizzo di una funzione o di un'espressione come valore predefinito di una colonna.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
L'alternativa sarebbe utilizzare un trigger per monitorare il BEFORE INSERT
della tabella desiderata.
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 ;
Questo cambierà il valore predefinito di un INSERT
istruzione a uuid()
valore, a meno che non sia stato esplicitamente definito.
MySQL 8.0.13 e versioni successive
Con versione di MySQL 8.0.13 un'espressione può ora essere utilizzata come valore predefinito, a condizione che sia racchiusa tra parentesi.
Esempio db<>violino
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html