Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL hat die Standard-ID UUID festgelegt

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