Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL definir id padrão UUID

MySQL 5.7, 8.0.12 e anteriores


O MySQL a partir de 5.7 ou 8.0.12 não suporta o uso de uma função ou expressão como o valor padrão de uma coluna.

https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html

A alternativa seria usar um gatilho para monitorar o BEFORE INSERT da mesa desejada.
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 ;

Isso mudará o valor padrão de um INSERT instrução para o uuid() valor, a menos que tenha sido explicitamente definido.

MySQL 8.0.13 e mais recente


Com o lançamento do MySQL 8.0.13 uma expressão agora pode ser usada como o valor padrão, desde que esteja entre parênteses.

Exemplo db<>fiddle

https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html