MySQL 5.7, 8.0.12 und älter
Ab Version 5.7 oder 8.0.12 von MySQL wird die Verwendung einer Funktion oder eines Ausdrucks als Standardwert einer Spalte nicht unterstützt.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
Die Alternative wäre, einen Trigger zu verwenden, um BEFORE INSERT
zu überwachen der gewünschten Tabelle.
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 ;
Dies ändert den Standardwert eines INSERT
-Anweisung an uuid()
Wert, es sei denn, es wurde explizit definiert.
MySQL 8.0.13 und neuer
Mit dem Veröffentlichung von MySQL 8.0.13 ein Ausdruck kann jetzt als Standardwert verwendet werden, sofern er in Klammern eingeschlossen ist.
Beispiel db<>fiddle
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html