sql >> Database >  >> RDS >> Mysql

MySQL stelt standaard id UUID in

MySQL 5.7, 8.0.12 en ouder

MySQL vanaf 5.7 of 8.0.12 ondersteunt het gebruik van een functie of expressie als standaardwaarde van een kolom niet.

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

Het alternatief zou zijn om een ​​trigger te gebruiken om de BEFORE INSERT van de gewenste tafel.

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 ;

Dit verandert de standaardwaarde van een INSERT statement naar de uuid() waarde, tenzij deze expliciet is gedefinieerd.

MySQL 8.0.13 en nieuwer

Met de release van MySQL 8.0.13 een uitdrukking kan nu als standaardwaarde worden gebruikt, op voorwaarde dat deze tussen haakjes staat.

Voorbeeld db<>fiddle

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



  1. Tabelalias gebruiken in een andere query om een ​​boomstructuur te doorlopen

  2. MYSQL-query - Hoe de juiste waarden te tonen, geen blobs, door CONCAT te doen en een nieuwe kolom te maken met de juiste meervoudige totaalwaarden?

  3. Waarom verschillende telresultaten bij opeenvolgende uitlezingen?

  4. Zorgt Connection Pooling ervoor dat Java Swing Application sneller werkt voor externe MySQL-database?