Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL ha impostato l'UUID dell'ID predefinito

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