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

MySQL indstillet standard-id UUID

MySQL 5.7, 8.0.12 og ældre

MySQL fra 5.7 eller 8.0.12 understøtter ikke brug af en funktion eller et udtryk som standardværdi for en kolonne.

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

Alternativet ville være at bruge en trigger til at overvåge BEFORE INSERT af den ønskede tabel.

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 ;

Dette vil ændre standardværdien for en INSERT sætning til uuid() værdi, medmindre den er blevet udtrykkeligt defineret.

MySQL 8.0.13 og nyere

Med udgivelse af MySQL 8.0.13 et udtryk kan nu bruges som standardværdi, forudsat at det er omgivet af parentes.

Eksempel db<>violin

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



  1. Hvordan kan jeg yderligere optimere en afledt tabelforespørgsel, som yder bedre end den JOINed-ækvivalent?

  2. C# og MySQL .NET Connector - Enhver måde at forhindre SQL Injection-angreb på i en generisk klasse?

  3. MySQL MAX() funktion til at sammenligne numeriske værdier i en opdatering?

  4. Søgning i et varchar-felt efter numeriske værdier for et bestemt område