sql >> Base de Datos >  >> RDS >> Mysql

MySQL establece la identificación predeterminada UUID

MySQL 5.7, 8.0.12 y anteriores

MySQL a partir de 5.7 u 8.0.12 no admite el uso de una función o expresión como valor predeterminado de una columna.

https://dev.mysql.com/doc /refman/5.7/en/tipo-de-datos-predeterminados.html

La alternativa sería usar un disparador para monitorear el BEFORE INSERT de la tabla deseada.

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 ;

Esto cambiará el valor predeterminado de un INSERT declaración al uuid() valor, a menos que se haya definido explícitamente.

MySQL 8.0.13 y posteriores

Con el lanzamiento de MySQL 8.0.13 ahora se puede usar una expresión como valor predeterminado, siempre que esté entre paréntesis.

Ejemplo db<>fiddle

https://dev.mysql.com/doc /refman/8.0/en/tipo-de-datos-predeterminados.html